CMAKE使用环境变量而不将它们作为命令行参数传递?

时间:2013-07-23 18:15:37

标签: c++ cmake

我在RHEL5上使用模块,并且在我的机器上有各种版本的编译器/ binutils。因此,我最终定义了指向我的工具并相应更新路径的环境变量,因此RHEL5附带的旧工具不在图中。

是否有一种简单的方法让cmake加载相应的环境变量?

例如在我的环境中:

CMAKE_CXX_COMPILER=/some/other/compiler
CMAKE_LINKER=/some/other/linker

有没有办法让cmake抓住这些而不通过命令行传递它们作为参数?

以下在我的CMakeLists.txt

中对我没有用
SET(CMAKE_CXX_COMPILER, $ENV{CMAKE_CXX_COMPILER})

并不奇怪,以下也没有用:

IF($ENV{CMAKE_CXX_COMPILER})
    SET(CMAKE_CXX_COMPILER, $ENV{CMAKE_CXX_COMPILER})
    MESSAGE("CMAKE_CXX_COMPILER ${CMAKE_CXX_COMPILER}")
ENDIF()

可能是语法问题或者不是更新这样的cmake变量的正确位置? 当我通过命令行传递时它确实有效(例如-DCMAKE_CXX_COMPILER = $ {CMAKE_CXX_COMPILER}),但我不想这样做。

由于

1 个答案:

答案 0 :(得分:2)

没关系。 这是语法错误:SET(CMAKE_CXX_COMPILER, $ENV{CMAKE_CXX_COMPILER})不应该有逗号。正确的语法是:

SET(CMAKE_CXX_COMPILER $ENV{CMAKE_CXX_COMPILER})