# Generate the Git Build ID information into a C source file # This does not overwrite the file if the contents are up-to-date. # # Arguments: # SOURCE_DIR The root directory of the project, expected to be a Git repo # OUTPUT_FILE The file which gets written # PREFIX An optional prefix for the constant name get_filename_component(OUTPUT_NAME "${OUTPUT_FILE}" NAME) get_filename_component(OUTPUT_DIR "${OUTPUT_FILE}" DIRECTORY) message("(Git Build ID) Generating ${OUTPUT_NAME}") find_package(Git QUIET) file(MAKE_DIRECTORY "${OUTPUT_DIR}") if(GIT_FOUND) execute_process(COMMAND "${GIT_EXECUTABLE}" "rev-parse" "--short" "HEAD" WORKING_DIRECTORY "${SOURCE_DIR}" OUTPUT_VARIABLE GIT_COMMIT_ID OUTPUT_STRIP_TRAILING_WHITESPACE) else() set(GIT_COMMIT_ID "") message("(Git Build ID) Error: could not find Git") endif() file(WRITE "${OUTPUT_FILE}.temp" "const char* ${PREFIX}GitBuildId = \"${GIT_COMMIT_ID}\";\n") execute_process(COMMAND "${CMAKE_COMMAND}" "-E" "copy_if_different" "${OUTPUT_FILE}.temp" "${OUTPUT_FILE}") file(REMOVE "${OUTPUT_FILE}.temp")