在make文件中读取环境变量

San*_*uys 19 makefile android-ndk

我有一个名为$ MY_ENV_VARIABLE的环境变量集.

如何在makefile中使用此变量(例如)包含一些源文件?

LOCAL_SRC_FILES = $(MY_ENV_VARIABLE)/libDEMO.so
Run Code Online (Sandbox Code Playgroud)

像上面这样的东西似乎不起作用.

注意:在我的情况下,需要使用Android NDK进行构建,但我想这一般适用于make.

joz*_*yqk 15

只是添加一些信息......

在make中访问环境变量的语法就像make中的其他变量一样......

#export the variable. e.g. in the terminal,
export MY_ENV_VARIABLE="hello world"

...

#in the makefile (replace before call)
echo $(MY_ENV_VARIABLE)
Run Code Online (Sandbox Code Playgroud)

这在执行命令之前执行替换.如果您反而希望在命令执行期间进行替换,则需要转义$(例如,echo $MY_ENV_VARIABLE不正确并将尝试替换Mmake中的变量,并将其追加到Y_ENV_VARIABLE)...

#in the makefile (replace during call)
echo $$MY_ENV_VARIABLE
Run Code Online (Sandbox Code Playgroud)


Mad*_*ist 11

确保从shell中导出变量.运行:

echo $MY_ENV_VARIABLE
Run Code Online (Sandbox Code Playgroud)

显示它是否在shell中设置.但是要知道你是否已经导出它以便子shell和其他子命令(比如make)可以看到它尝试运行:

env | grep MY_ENV_VARIABLE
Run Code Online (Sandbox Code Playgroud)

如果它不存在,请确保export MY_ENV_VARIABLE在运行make之前运行.

这就是你需要做的所有事情:make会在启动时自动导入所有环境变量作为make变量.