我在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-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。
任何想法如何做到这一点?
谢谢!
答案 0 :(得分:0)
我认为,无论流程是从终端还是从GUI(启动板,聚光灯......)启动,环境变量都可能不同。
前者会使用PATH
(或其他与shell相关的启动文件)中设置的bashrc
,而另一个则不会。
我想您可能会在以下问题中找到有关如何更改启动守护程序的环境变量的有趣信息: