J'utilise ant pour construire un mélange de code Java et C++ (JNI) qui constitue un projet client ici. J'ai récemment changé la partie C++ de la construction en utilisant ant avec cpptasks pour construire le code C++ au lieu d'avoir invoquer les différentes versions de Visual Studio qui sont nécessaires pour construire le code. Pour que cela fonctionne, il est nécessaire d'utiliser la tâche exec de ant pour générer un shell dans lequel un script shell ou un fichier batch s'exécute pour configurer l'environnement du compilateur avant de déclencher une autre ant qui exécute le cpptasks- base de construction C++. Essentiellement, le C++ - tâches de construction liées dans le fichier de construction fourmi principale ressembler à ceci pour Windows:Passer des options de ligne de commande ant à un processus ant 'exec'?
<target name="blah">
<exec executable="cmd" failonerror="true">
<arg value="/C"/>
<arg line=""${cpp.compiler.path}/vsvars32.bat" && %ANT_HOME%/bin/ant -f cpp-build.xml make-cpp-stuff" />
</exec>
</target>
Il n'y a pas moyen de se débarrasser de l'invocation vsvars32.bat que le code doit être construit avec plusieurs VS versions et sur les machines de construction où aucun de l'installation de Visual Studio ne peut faire partie de l'environnement de l'utilisateur de construction. Ce qui précède fonctionne, mais le problème que je rencontre est que je voudrais passer certaines options de la ligne de commande (comme -verbose, -quiet, -emacs) à la fourmi enfant si elles ont été passées à la parent ant. Est-il possible d'avoir accès aux options de ligne de commande données à la fourmi parent? Veuillez noter que je ne parle pas des définitions de propriétés habituelles, mais des options ant-internal.
Merci de remarquer comment diviser la ligne de commande dans - qui m'a finalement aidé à le faire correctement. Cela dit, cela ne résout pas le problème que j'ai, à savoir passer -emacs/-verbose/-quit à la fourmi enfant si la fourmi ayant invoqué la cible 'blah' avait ces options ou l'une de ces options la ligne de commande. BTW, j'ai également pris la liberté d'insérer un important élément manquant dans la liste des valeurs arg. –