Passing a CMake variable to C++ source code.代码引用CMake参数
配置文件
CMakeLists.txt 代码
1 2 3 4 5 6 7 8 9 10
| add_definitions("-DGIT_COMMIT_HASH=${GIT_COMMIT_HASH}")
configure_file( ${CMAKE_SOURCE_DIR}/include/version.h.in ${CMAKE_BINARY_DIR}/generated/version.h ) include_directories( src/ ${CMAKE_BINARY_DIR}/generated )
|
版本 h.in 代码
1 2 3 4 5 6
| #ifndef VERSION_H #define VERSION_H
#define GIT_COMMIT_HASH "@GIT_COMMIT_HASH@"
#endif
|
自动生成的版本.h 代码
1 2 3 4 5 6
| #ifndef VERSION_H #define VERSION_H
#define GIT_COMMIT_HASH "a02cab8"
#endif
|
main.cpp 代码
1 2
| #include <version.h> printf("GIT COMMIT HASH: %s", GIT_COMMIT_HASH);
|
直接设置参数
该方法可能失效,在高版本cmake中不能使用
1 2 3 4
| add_executable(myexe main.cpp) if (MY_VAR) target_compile_definitions(myexe PRIVATE MY_VAR=${MY_VAR}) endif()
|
随后代码中直接引用MY_VAR即可
参考链接:
Passing a CMake variable to C++ source code - fsou