我有一个看起来像这样的文件:
// run script Y
#include ./relativePath/to/script.y
// run script Z
#include ./relativePath/to/script/z.z
// etc.
我想要ANT做的是,取这个文件并将所有包含替换为#include
'指令'指向的文件的实际内容,相对于文件本身。我正在寻找replaceregexp
但并没有获得太多的快乐。
有人能指出我的方向吗?
TIA
答案 0 :(得分:1)
我没有找到完美的方法来做到这一点。然而,我确实找到了符合我需求的解决方案。
不是从单个源文件开始并试图找出要替换的文件,而是循环查看我知道可能包含的文件,用文件内容替换它们的“包含”实例。
类似的东西:
<target name="fubar">
...
<foreach target="injectFile" inheritall="true" param="include.file">
<fileset dir="${src.dir}" casesensitive="yes" />
</foreach>
</target>
<target name="injectFile">
... code that works out relative path of include file here ...
<loadfile property="include.file.content" srcFile="${include.file}" />
<replace file = "${build.file}"
token = "#include ${include.file.relative.path}"
value = "${include.file.content}" />
</target>
答案 1 :(得分:0)
您的语法非常接近C预处理器。它是将文件名放在引号中的解决方案,例如:
#include "./relativePath/to/script.y"
用于在cpp中提供文件:
cpp -o output inputfile