您提供的零件代碼在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。