execute_process( COMMAND git rev-parse --short HEAD WORKING_DIRECTORY ${SOURCE_DIR} OUTPUT_VARIABLE GIT_HASH_SHORT OUTPUT_STRIP_TRAILING_WHITESPACE ) execute_process( COMMAND git rev-parse HEAD WORKING_DIRECTORY ${SOURCE_DIR} OUTPUT_VARIABLE GIT_HASH_LONG OUTPUT_STRIP_TRAILING_WHITESPACE ) # Check for uncommitted changes execute_process( COMMAND git diff-index --quiet HEAD -- WORKING_DIRECTORY ${SOURCE_DIR} RESULT_VARIABLE GIT_DIRTY ) # If GIT_DIRTY is non-zero, there are local modifications if(NOT GIT_DIRTY EQUAL 0) set(GIT_HASH_SHORT "${GIT_HASH_SHORT}+") set(GIT_HASH_LONG "${GIT_HASH_LONG}+") endif() file(WRITE ${OUTPUT_FILE} "#ifndef GIT_VERSION_H #define GIT_VERSION_H #define GIT_COMMIT_HASH_SHORT \"${GIT_HASH_SHORT}\" #define GIT_COMMIT_HASH_LONG \"${GIT_HASH_LONG}\" #endif ")