cpptasksで文字列をdefineする
対策
「"${basedir}"」ではなく,「"¥"${basedir}¥""」などとします(「¥&」は半角で)
テスト用C++ソースコード
次のコードの「__BUILD_ROOT__」に文字列(path;フォルダ名)を与えるということです.
#include <iostream> using namespace std; int main() { cout <<__BUILD_ROOT__ <<endl; }
ビルド用 build.xml
<?xml version="1.0" encoding="UTF-8"?> <project name="Test00" default="build" basedir="." xmlns:cpptasks="antlib:net.sf.antcontrib.cpptasks"> <pathconvert targetos="windows" property="build.root" dirsep="\\"> <path location="."/> </pathconvert> <target name="build"> <cpptasks:cc outtype="executable" subsystem="console" outfile="Test00"> <defineset> <define name="__BUILD_ROOT__" value="\"${build.root}\""/> </defineset> <fileset dir="." includes="*.cpp"/> <libset libs="stdc++"/> <linkerarg value="--enable-auto-import"/> </cpptasks:cc> </target> </project>
結果
etc@etcpc /cygdrive/e/home(etc)/projects/地デジ/test_ant_cpp_define_string $ ant Buildfile: E:\home(etc)\projects\地デジ\test_ant_cpp_define_string\build.xml build: 1 total files to be compiled. Starting link BUILD SUCCESSFUL Total time: 1 second etc@etcpc /cygdrive/e/home(etc)/projects/地デジ/test_ant_cpp_define_string $ ./Test00.exe e:\home(etc)\projects\地デジ\test_ant_cpp_define_string