Comment builder un project android/c++ fait sous Eclipse à partir d’un fichier de commande batch

Salut à tous,

Si vous êtes comme moi, vous utilisez toujours des fichiers batch sous windows alors que c’est super « old-school ».

Si vous voulez compiler un projet android/jni fait sous Eclipse depuis un fichier batch, c’est finalement plus facile que prévu.

1) Il faut avoir tout (java/SDK/NDK/ant/…) installé et accessible dans votre PATH windows

2) N’utilisez pas ndk-build mais plutôt ndk-build.cmd à la place.  Comme ce n’est pas un exécutable mais un fichier de commande, vous devez l’appeler avec un CALL sinon vous allez interrompre l’exécution du fichier batch courant.

3) N’utilisez pas « ant release » mais plutôt « ant clean release » parce que les ressources ne sont pas compatibles entre eclipse et ant donc si vous switchez sans cleaner auparavant, ça ne marchera pas.

4) Le résultat :

PUSHD ..\myproject\android

call ndk-build.cmd clean
call ndk-build.cmd
call ant clean release

POPD

OSX Ouvrir le Finder dans un répertoire spécifique depuis un programme c/c++

C’est tellement stupide que je devais l’écrire quelque part. J’ai passé vraiment trop de temps sur ce problème 😉

Je vouIais juste ouvrir l’application depuis mon application c/c++. Après une recherche rapide sur Google, je suis tombé sur la solution (enfin c’est ce que je croyais) un simple

system ('open mypath')

devait faire l’affaire.

Je test dans Xcode … Bingo ça marche, j’étais trop content !

Malheureusement, quand je me suis mis à lancer mon programme hors de Xcode (c’est à dire depuis le finder) Bim, le drame. Rien ne marchait. La fonction « system » me renvoit des erreurs. Pourquoi ? Je n’en sais toujours rien. Est-ce un problème de privilèges ? un problème de Sandbox ? Si vous avez la réponse, laissez moi un commentaire, ça m’intéresse je suis vraiment curieux.

En fait la solution était bien plus complexe que prévue. Grâce au code source de QTCreator j’ai vu comment il fallait faire : Il faut executer un appleScript (via osascript) pour dire au finder d’ouvrir un fichier posix et executer une autre commande applescript pour dire au finder de se mettre devant toutes les autres fenêtres … Are you serious Apple ???

std::string tempPath;
std::string command;
tempPath = currentDir;
command = "osascript -e 'tell app \"Finder\" to open POSIX file \""+ tempPath+"\"'";
system(command.c_str());
command = "osascript -e 'tell application \"Finder\" to activate'";
system(command.c_str());