私は ant を使用して、ここでクライアント プロジェクトを構成する Java と C++ (JNI) コードの混合物をビルドしています。私は最近、ビルドの C++ 部分を、コードのビルドに必要なさまざまなバージョンの Visual Studio を呼び出す代わりに、cpptasks で ant を使用して C++ コードをビルドするように切り替えました。
これを機能させるには、ant の exec タスクを使用して、cpptasks ベースの C++ ビルドを実行する別の ant をトリガーする前に、シェル スクリプトまたはバッチ ファイルを実行してコンパイラ環境をセットアップするシェルを生成する必要があります。基本的に、メインの ant ビルド ファイル内の C++ 関連のビルド タスクは、Windows では次のようになります。
<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>
vsvars32.bat の呼び出しを取り除く方法はありません。コードは、複数の VS バージョンを使用してビルド マシン上でビルドする必要があり、Visual Studio のセットアップをビルド ユーザーの環境の一部にすることはできません。
上記は機能しますが、私が直面している問題は、特定のコマンド ライン オプション (-verbose、-quiet、-emacs など) が親 ant に渡されている場合に、それらを子 ant に渡したいということです。親アリに与えられたコマンドラインオプションでアクセスすることはできますか? 通常のプロパティ定義について話しているのではなく、ant-internal オプションについて話していることに注意してください。