【发布时间】:2021-11-27 20:59:01
【问题描述】:
在使用 NDK 构建 Android 应用程序时,我需要设置一个环境变量,以便我的 NDK 项目中的所有 CMakeLists.txt 文件都可以访问该值。很可能我只需要为这个特定的应用程序设置该值。有什么简单的方法吗?
我尝试过的事情:
我尝试使用 bash 脚本来设置环境,并在 gradle 构建期间在 preBuild 之前运行脚本。我认为脚本已执行,但是未设置 env var,至少无法从 CMakeLists.txt 文件中读取。这是app/build.gradle中的代码:
task runBuildScript(type: Exec) {
commandLine "bash", "-c", './set-env.sh'
}
project.afterEvaluate {
preBuild.dependsOn(runBuildScript)
}
这几乎是脚本所做的所有事情:
DIR="${BASH_SOURCE[0]}"
export SDK_BASE=$( cd "$( dirname "$DIR" )/../../" > /dev/null && pwd )
这就是我计划在我的 CMakeLists.txt 文件中使用该环境变量的方式:
LIST(APPEND CMAKE_MODULE_PATH "$ENV{SDK_BASE}/build-tools/cmake")
include(sdk_module) # this line will only work if the above command can find the module from the correct location
仅供参考,我在 Mac 上使用 Android Studio 来构建这个应用程序,如果这很重要的话。
【问题讨论】:
-
Shell 脚本(在您的情况下为
set-env.sh)无法修改外壳的环境。参见例如that question.
标签: android macos cmake android-ndk environment-variables