您提供的零件代码在CMake时运行(可能来自CMakeLists.txt)。您不可能在Cmake时间处理递增的值,但您可以做的是在构建时运行一些cmake脚本,并以不同的方式(例如通过标题)将递增的值传递给源代码。
运行cmake的脚本编译之前(进入你的CMakeLists.txt):
add_custom_command(
TARGET your_project
PRE_BUILD
COMMAND ${CMAKE_COMMAND}
-P "your_cmake_script.cmake"
)
你需要把你想在编译时运行的代码放到不同的文件,并告诉CMake的要在编译过程之前的文件...
your_cmake_script.cmake例如:
#basic definitions
set(HEADER_FILE "increment.h")
set(CACHE_FILE "BuildNumberCache.txt")
#Reading data from file + incrementation
IF(EXISTS ${CACHE_FILE})
file(READ ${CACHE_FILE} INCREMENTED_VALUE)
math(EXPR INCREMENTED_VALUE "${INCREMENTED_VALUE}+1")
ELSE()
set(INCREMENTED_VALUE "1")
ENDIF()
#Update the cache
file(WRITE ${CACHE_FILE} "${INCREMENTED_VALUE}")
#Create the header
file(WRITE ${HEADER_FILE} "#ifndef INCREMENT_H\n#define INCREMENT_H\n\n#define INCREMENTED_VALUE ${INCREMENTED_VALUE}\n\n#endif")
不要忘记increment.h添加到您的项目!
如果您正在查找更详细的示例,请检查此github repo。