来源:通义千问、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 会作为变量名被使用,而不是作为字符串被使用。