cmake 传递宏定义的变量到c++ 代码

创建日期: 2024-10-09 17:52 | 作者: 风波 | 浏览次数: 9 | 分类: CMake

来源:通义千问、chatGPT

1. cmake 命令传递变量

buildtime=$(date '+%Y-%m-%d %H:%M:%S')
cmake -DCMAKE_BUILD_TYPE=Debug -DBUILDTIME="${buildtime}" ..

2. 定义宏定义

  1. 在 CMakeLists.txt 文件中使用 add_definitions 指令添加宏定义
add_definitions(-DBUILDTIME="${BUILDTIME}")

其中 BUILDTIME 是通过 cmake 命令传进来的:cmake -DCMAKE_BUILD_TYPE=Debug -DBUILDTIME="${buildtime}" ..

  1. 使用 cmake 指令 target_compile_definitions(MyExecutable PRIVATE -DMY_STRING="${MY_STRING}") 添加宏定义

3. 在 c++ 代码中使用宏定义

#ifdef BUILDTIME
#define STRINGIFY(x) #x
#define TOSTRING(x) STRINGIFY(x)
    EASYLOG_DEBUG("build time: %s", TOSTRING(BUILDTIME));
#endif

如果不进行 TOSTRING 的转换,那么宏定义 BUILDTIME 会作为变量名被使用,而不是作为字符串被使用。

9 浏览
0 评论