我知道如何使用CMAKE检索正常的机器范围的环境变量
$ENV{EnvironmentVariableName}
但我无法检索用户特定的环境变量.有可能吗?怎么样?
您可以使用cmake调用在行上传递变量:
FOO=1 cmake
或者通过在BASH中导出变量:
export FOO=1
然后你可以使用以下命令在cmake脚本中获取它:
$ENV{FOO}
您还可以调用cmake本身以跨平台方式执行此操作:
cmake -E env EnvironmentVariableName="Hello World" cmake ..
env [--unset=NAME]... [NAME=VALUE]... COMMAND [ARG]...
在修改后的环境中运行命令.
请注意,这可能只是第一次工作.如果CMake使用其中一个连续构建重新配置(您只需调用eg make
,一个CMakeLists.txt
已更改并且CMake再次运行生成过程),则用户定义的环境变量可能不再存在(与系统范围的环境变量相比).
所以我将项目中用户定义的环境变量转换为CMake缓存变量:
cmake_minimum_required(VERSION 2.6) project(PrintEnv NONE) if (NOT "$ENV{EnvironmentVariableName}" STREQUAL "") set(EnvironmentVariableName "$ENV{EnvironmentVariableName}" CACHE INTERNAL "Copied from environment variable") endif() message("EnvironmentVariableName = ${EnvironmentVariableName}")
参考
CMake - 命令行工具模式