diff --git a/version.cmake b/version.cmake index 4dd6db6d..80f1c40b 100644 --- a/version.cmake +++ b/version.cmake @@ -11,12 +11,22 @@ if ("$Format:$" STREQUAL "") write_static_version_header("release") elseif (GIT_FOUND OR Git_FOUND) message(STATUS "Found Git: ${GIT_EXECUTABLE}") - add_custom_target(version ALL + set(extra_output) + if (CMAKE_GENERATOR MATCHES "Ninja") + # Ninja will not rerun the command every time if the file doesn't change, + # so inject this bogus output so that it always runs. + set(extra_output "${CMAKE_SOURCE_DIR}/.force-git-version-check") + endif () + add_custom_command( + OUTPUT "${CMAKE_BINARY_DIR}/version/version.h" + ${extra_output} COMMAND "${CMAKE_COMMAND}" "-D" "GIT=${GIT_EXECUTABLE}" "-D" "TO=${CMAKE_BINARY_DIR}/version/version.h" "-P" "src/version.cmake" WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}") + add_custom_target(version ALL + DEPENDS "${CMAKE_BINARY_DIR}/version/version.h") else() message(STATUS "WARNING: Git was not found!") write_static_version_header("unknown")