Как управлять средой PATH, используемой в сборке Android NDK?

Я использую swig из моего Android.mk. Я ссылаюсь на него напрямую, полагаясь на переменную $PATH для указания пути к ее исполняемому файлу.

Проблема в том, что переменная $PATH отличается в зависимости от того, откуда запускается инструмент android-ndk.

Фон

В моем файле Android.mk:

# some stuff ...
@echo "$(PATH)"
swig # swig parameters here...
# more stuff ...

Из терминала мы видим системный путь, включающий путь к swig:

which swig
/usr/local/bin/swig
echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:

вопрос

Когда android-ndk запускается из Android Studio, я получаю следующее для PATH (обратите внимание: в нем отсутствует путь swig):

/usr/bin:/bin:/usr/sbin:/sbin

Это приводит к сбою моей сборки, потому что "swig" не распознается:

make: swig: Command not found

Однако, если я запускаю android-ndk непосредственно из терминала, то используемый путь PATH совпадает с моим системным путем, и сборка работает нормально:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:

Плохое решение

Да, я мог бы добавить путь к файлу Android.mk вручную:

export PATH:=/usr/local/bin/:$(PATH)

Однако я предпочел бы не определять конкретные пути для моей машины, зная, что вся команда использует этот файл.

Вопрос

Я бы предпочел, чтобы файл Android.mk использовал вместо меня системный PATH.

Есть идеи, как это сделать?

Спасибо!

1 ответ

На мой взгляд, переменные окружения могут отличаться, независимо от того, запущен ли процесс из терминала или из графического интерфейса (launchpad, spotlight,...).

Бывший будет использовать PATH как установлено в bashrc (или другие файлы запуска, связанные с оболочкой), а другой нет.

Я думаю, что вы можете найти интересную информацию о том, как изменить переменные среды для запуска deamon в следующем вопросе:

Установка переменных среды в OS X?

Другие вопросы по тегам