将CMake变量传递给C ++源代码

时间:2014-03-07 19:44:30

标签: c++ cmake

首先,我已经阅读了How to read a CMake Variable in C++ source code,我真的不知道它是否可以帮助我。

第二,我的问题。顶级CMakeLists.txt表示SET( MY_VAR /some/path ),在顶级source.cpp中我需要以某种方式实现std::string包含/some/path/to/files自然使用MY_VAR值。

3 个答案:

答案 0 :(得分:5)

您可以使用configure_file(filename output_file)命令。它会将文件${VARIABLE}中的@VARIABLE@filename替换为cmake变量VARIABLE的实际值,并将结果写入output_file

所以,你可以写一些像

这样的东西
// in C++ code
std::string my_var = "@MY_VAR@";

# in CMakeLists.txt
configure_file(filename.h.in filename.h)

另外,我认为在构建目录中的某个地方生成输出文件是个好主意(并且它包含添加到包含路径的目录)。

configure_file in cmake documantation

答案 1 :(得分:2)

add_executable(myexe main.cpp)
if (MY_VAR)
    target_compile_definitions(myexe PRIVATE MY_VAR=${MY_VAR})
endif()

答案 2 :(得分:-1)

在编译期间传递值的唯一方法是传递宏。例如,如果CMake设置了一个名为$(MY_VAR)的宏(如make(1)那样):

g++ -DMY_VAR=$(MY_VAR) .... xxx.cc

xxx.cc根据需要使用MY_VAR