在CMake中保留环境变量

时间:2010-10-13 13:34:45

标签: environment-variables cmake

我正在开发一些需要来自不同源树的头文件的东西。出于各种原因,我想将这些标题保留在我的项目之外,并在制作过程中引用它们。

我有一个生成makefile的CMake构建脚本,但是我希望能够生成带有环境变量引用的makefile,这样生成的makefile就可以这样运行:

HEADERS=/somewhere/on/the/filesystem make

这是否可以使用CMake?如果做不到的话,有没有办法让我在使用CMake之后得到的东西?

4 个答案:

答案 0 :(得分:1)

您应该使用TARGET和PRE_LINK选项查看add_custom_command

答案 1 :(得分:1)

这似乎对我有用:

set(${PROJECT_NAME}_PORT "$(TARGET_SERIAL_PORT)")

这是一个现实世界的例子,但我希望它能给你一个想法。您可以将字符串分配给变量,该变量将逐字复制到Makefile。

答案 2 :(得分:0)

您可以使用$ENV{VARIABLE}来获取环境变量的值,但只会在cmake运行期间而不是在make期间进行评估。

答案 3 :(得分:0)

要传递环境变量,您可以:

CMAKE_POLICY(PUSH)
CMAKE_POLICY(SET CMP0005 NEW)
ADD_DEFINITIONS(-DHEADER=$ENV{HEADER})
CMAKE_POLICY(POP)

HEADER替换为您的变量名。

设置cmake策略CMP0005是为了让cmake为您生成正确的转义。