0

我在 Android.mk 中使用swig。我直接依赖 $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 Studio 中运行 android-ndk 时,我得到以下 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 。

任何想法如何做到这一点?

谢谢!

4

1 回答 1

0

在我看来,无论进程是从终端启动还是从 GUI(启动板、聚光灯等)启动,环境变量都可能不同。

前者将使用PATHas set in bashrc(或其他与 shell 相关的启动文件),而另一个则不会。

我认为您可能会在以下问题中找到有关如何更改启动守护程序的环境变量的有趣信息:

在 OS X 中设置环境变量?

于 2017-03-17T10:30:02.140 回答