CMake 使用 - 引用CMake参数

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