1. 程式人生 > >c/c++中將git當前版本資訊編譯到可執行檔案中

c/c++中將git當前版本資訊編譯到可執行檔案中

使用簡單Makefile,則可直接新增巨集定義:

CPPFLAGS+=-DGIT_SHA1="$(shell git log --format='[sha1]:%h [author]:%cn [time]:%ci [commit]:%s [branch]:%d' -1)"

使用CMake,在CMakeList.txt中新增:

exec_program(
    "git"
    ${CMAKE_CURRENT_SOURCE_DIR}
    ARGS "log --format='[sha1]:%h [author]:%cn [time]:%ci [commit]:%s [branch]:%d' -1"
    OUTPUT_VARIABLE VERSION_SHA1 )
add_definitions( -DGIT_SHA1="${VERSION_SHA1}" )

然後在程式碼中根據巨集GIT_SHA1來進行相應的列印輸出,方便追蹤對應的版本資訊。

ps: 如果不使用巨集,也可替換原始檔方法,或者CMakefile中使用configure_file來進行管理xxx.cpp.in檔案編譯。