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

Jav*_*ier 3 c++ cmake

首先,我已经阅读了如何在C++源代码中读取CMake变量,我真的不知道它是否可以帮助我.

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

ste*_*ire 8

add_executable(myexe main.cpp)
if (MY_VAR)
    target_compile_definitions(myexe PRIVATE MY_VAR=${MY_VAR})
endif()
Run Code Online (Sandbox Code Playgroud)


lis*_*rus 5

您可以使用该configure_file(filename output_file)命令.它用cmake变量的实际值替换类似${VARIABLE}@VARIABLE@在文件中的内容filename,VARIABLE并将结果写入output_file.

所以,你可以写类似的东西

// in C++ code
std::string my_var = "@MY_VAR@";

# in CMakeLists.txt
configure_file(filename.h.in filename.h)
Run Code Online (Sandbox Code Playgroud)

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

cmake文档中的configure_file

  • @Javier:这个命令应该用于从某种模板文件生成一个真正的源文件,而不是像`configure_file(source.cpp source.cpp)`那样调用它。 (3认同)