From 1d61453b16065e215edcbfe50827fcdbdcf2aec1 Mon Sep 17 00:00:00 2001 From: Richard Otrebski Date: Thu, 25 Oct 2018 20:10:26 +0200 Subject: [PATCH] Added function to repeatedly run the version builder on every compilation run. Therefore running CMake is not required to be run again to get the current version information --- cmake.cmake | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/cmake.cmake b/cmake.cmake index 2cdf085..44870b9 100644 --- a/cmake.cmake +++ b/cmake.cmake @@ -48,3 +48,25 @@ function(GET_GIT_VERSION OUTPUT_VARIABLE) _CREATE_GIT_VERSION_FILE() _SET_GITVERSION_CMAKE_VARIABLE(${OUTPUT_VARIABLE}) endfunction(GET_GIT_VERSION OUTPUT_VARIABLE) + +###################################################### +# Add git version information +# Uses: +# GIT_VERSION_INFO(buildtarget) +# Then, you can write in your source file: +# #include +# cout << gitversion::VERSION.toString() << endl; +###################################################### +function(GIT_VERSION_INFO TARGET_) + FILE(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/messmer_gitversion") + FILE(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/messmer_gitversion/gitversion") + + IF(NOT TARGET ${PROJECT_NAME}_VERSION_INFO) + add_custom_target( ${PROJECT_NAME}_VERSION_INFO + COMMAND /usr/bin/env PYTHONPATH=${DIR_OF_GITVERSION_TOOL}/src:"$PYTHONPATH" python -m gitversionbuilder --lang cpp --dir "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/messmer_gitversion/gitversion/version.h" + BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/messmer_gitversion/gitversion/version.h" + ) + ENDIF() + TARGET_INCLUDE_DIRECTORIES(${TARGET_} PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/messmer_gitversion") + ADD_DEPENDENCIES(${TARGET_} ${PROJECT_NAME}_VERSION_INFO) +endfunction(GIT_VERSION_INFO)