繁体   English   中英

不使用configure_file时如何使用CMake生成C ++代码?

[英]How to use CMake to generate C++ code when not using configure_file?

我的CMake脚本会在C ++代码中生成一些我想要的信息。 该信息是一些我希望用户能够看到的文本。

我知道我可以在C ++代码变量中定义类似@mySpecialVariable@变量。 如果这些变量由CMake定义,则在使用configure_file ,将通过CMake定义mySpecialVariable的值来修改源文件。

我的问题是我从来没有使用过configure_file 我的构建目录与源目录是分开的,但是源文件永远不会从源目录复制(即configure_file )到构建目录中。

无论如何,不​​使用configure_file可以执行此操作吗?

CMake 3.12具有一个名为add_compiler_definitions的新功能,该功能应适合您的需求。

最小示例:

CMakeLists.txt

cmake_minimum_required(VERSION 3.12)
project(cmake_text)
set(MyCMakeVar "MySpecialText")
add_compile_definitions(CMAKE_TEXT="${MyCMakeVar}")
add_executable(cmake_text main.cpp)

main.cpp

#include <iostream>

int main(int argc, char** argv)
{
#ifdef CMAKE_TEXT
    std::cout << "Cmake defined following text: " << CMAKE_TEXT << std::endl;
#else
    std::cout << "CMake did not define any text!" << std::endl;
#endif
    return 0;
}

标准输出的输出将是:

CMake定义了以下文本:MySpecialText

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM