我在构建文件中有这些行:
<property environment="env"/>
...
<echo>Path: ${env.PATH}:/usr/local/bin</echo>
<exec executable="cmake" searchpath="true" dir="${engine}">
<env key="PATH" path="${env.PATH}:/usr/local/bin"/>
<arg value=".." />
</exec>
因为我的cmake
安装在这里:
> which cmake
cmake is /usr/local/bin/cmake
但是当我建立时,我得到了这个:
[echo] Path: /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
BUILD FAILED
build.xml:17: Execute failed: java.io.IOException: Cannot run program "cmake" (in directory "engine"): error=2, No such file or directory
虽然这有效:
<exec executable="/usr/local/bin/cmake" searchpath="true" dir="${engine}">
如果重要,我使用Eclipse Mars 4.5.2在OSX上。假设Eclipse在我的路径上使用ant,那就是:
> ant -version
Apache Ant(TM) version 1.9.6 compiled on June 29 2015
答案 0 :(得分:2)
查找cmake时,您的PATH不包含/ usr / local / bin。如果找到了cmake,那么它将以您指定的PATH值运行。 exec下的env元素是给定子进程的,但Ant本身并没有使用它。您需要在运行ant之前修改路径或指定完整路径。
答案 1 :(得分:1)
您实际上没有更新PATH
env变量以包含/usr/local/bin
。构建文件仅将其附加到echo消息。要更新变量,您可以执行以下操作:
<property environment="env"/>
<exec executable="cmake" searchpath="true" dir="${engine}">
<env key="PATH" value="${env.PATH}:/usr/local/bin"/>
</exec>