来源:通义千问、chatGPT
1. cmake 命令传递变量
buildtime=$(date '+%Y-%m-%d %H:%M:%S')
cmake -DCMAKE_BUILD_TYPE=Debug -DBUILDTIME="${buildtime}" ..
2. 定义宏定义
- 在 CMakeLists.txt 文件中使用
add_definitions
指令添加宏定义
add_definitions(-DBUILDTIME="${BUILDTIME}")
其中 BUILDTIME
是通过 cmake
命令传进来的:cmake -DCMAKE_BUILD_TYPE=Debug -DBUILDTIME="${buildtime}" ..
- 使用 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
会作为变量名被使用,而不是作为字符串被使用。