2016-03-03 3 views
3

У меня есть эти строки в моем файле сборки:Почему Ant не использует мой путь?

<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}"> 

Если это имеет значение, я нахожусь на OSX, используя Eclipse Mars 4.5.2. Предполагая, что Eclipse, использует муравья на моем пути, это:

> ant -version 
Apache Ant(TM) version 1.9.6 compiled on June 29 2015 

ответ

1

Вы на самом деле не обновлять переменную PATH ENV содержать /usr/local/bin. Файл сборки только добавляет его к эхо-сообщению. Чтобы обновить переменную, вы можете сделать:

<property environment="env"/> 
<exec executable="cmake" searchpath="true" dir="${engine}"> 
    <env key="PATH" value="${env.PATH}:/usr/local/bin"/> 
</exec> 
2

Ваш PATH при поиске CMake не содержит/USR/местные/бен. Если smake был найден, то он будет работать со значением PATH, которое вы указали. Элемент env под exec - это то, что дается подпроцессом, но оно не используется самим Ant. Вам нужно изменить путь до запуска муравья или указать полный путь, как вы.

+0

Просто столкнулся с той же проблемой. Я думаю, что ваши объяснения верны. – Markus