1MACRO(CREATE_QGSVERSION) 2 IF (EXISTS ${CMAKE_SOURCE_DIR}/.git/index) 3 FIND_PROGRAM(GITCOMMAND git PATHS c:/cygwin/bin) 4 IF(GITCOMMAND) 5 IF(WIN32 AND NOT CMAKE_CROSS_COMPILING) 6 IF(USING_NINJA) 7 SET(ARG %a) 8 ELSE(USING_NINJA) 9 SET(ARG %%a) 10 ENDIF(USING_NINJA) 11 ADD_CUSTOM_COMMAND( 12 OUTPUT ${CMAKE_BINARY_DIR}/qgsversion.h ${CMAKE_BINARY_DIR}/qgsversion.inc 13 COMMAND for /f \"usebackq tokens=1\" ${ARG} in "(`\"${GITCOMMAND}\" log -n1 --oneline`)" do echo \#define QGSVERSION \"${ARG}\" >${CMAKE_BINARY_DIR}/qgsversion.h.temp 14 COMMAND for /f \"usebackq tokens=1\" ${ARG} in "(`\"${GITCOMMAND}\" log -n1 --oneline`)" do echo PROJECT_NUMBER = \"${COMPLETE_VERSION}-${RELEASE_NAME} \(${ARG}\)\" >${CMAKE_BINARY_DIR}/qgsversion.inc 15 COMMAND ${CMAKE_COMMAND} -DSRC=${CMAKE_BINARY_DIR}/qgsversion.h.temp -DDST=${CMAKE_BINARY_DIR}/qgsversion.h -P ${CMAKE_SOURCE_DIR}/cmake/CopyIfChanged.cmake 16 MAIN_DEPENDENCY ${CMAKE_SOURCE_DIR}/.git/index 17 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} 18 ) 19 ELSE(WIN32 AND NOT CMAKE_CROSS_COMPILING) 20 ADD_CUSTOM_COMMAND( 21 OUTPUT ${CMAKE_BINARY_DIR}/qgsversion.h ${CMAKE_BINARY_DIR}/qgsversion.inc 22 COMMAND ${GITCOMMAND} log -n1 --pretty=\#define\\ QGSVERSION\\ \\"%h\\" >${CMAKE_BINARY_DIR}/qgsversion.h.temp 23 COMMAND ${GITCOMMAND} log -n1 --pretty='PROJECT_NUMBER = \"${COMPLETE_VERSION}-${RELEASE_NAME} \(%h\)\"' >${CMAKE_BINARY_DIR}/qgsversion.inc 24 COMMAND ${GITCOMMAND} config remote.$$\(${GITCOMMAND} config branch.$$\(${GITCOMMAND} name-rev --name-only HEAD\).remote\).url | sed -e 's/^/\#define QGS_GIT_REMOTE_URL \"/' -e 's/$$/\"/' >>${CMAKE_BINARY_DIR}/qgsversion.h.temp 25 COMMAND ${CMAKE_COMMAND} -DSRC=${CMAKE_BINARY_DIR}/qgsversion.h.temp -DDST=${CMAKE_BINARY_DIR}/qgsversion.h -P ${CMAKE_SOURCE_DIR}/cmake/CopyIfChanged.cmake 26 MAIN_DEPENDENCY ${CMAKE_SOURCE_DIR}/.git/index 27 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} 28 ) 29 ENDIF(WIN32 AND NOT CMAKE_CROSS_COMPILING) 30 ELSE(GITCOMMAND) 31 MESSAGE(STATUS "git marker, but no git found - version will be unknown") 32 IF(NOT SHA) 33 SET(SHA "unknown") 34 ENDIF(NOT SHA) 35 FILE(WRITE ${CMAKE_BINARY_DIR}/qgsversion.h "#define QGSVERSION \"${SHA}\"\n") 36 FILE(WRITE ${CMAKE_BINARY_DIR}/qgsversion.inc "PROJECT_NUMBER = \"${COMPLETE_VERSION}-${RELEASE_NAME} (${SHA})\"\n") 37 ENDIF(GITCOMMAND) 38 ELSE (EXISTS ${CMAKE_SOURCE_DIR}/.git/index) 39 IF(NOT SHA) 40 SET(SHA "exported") 41 ENDIF(NOT SHA) 42 FILE(WRITE ${CMAKE_BINARY_DIR}/qgsversion.h "#define QGSVERSION \"${SHA}\"\n") 43 FILE(WRITE ${CMAKE_BINARY_DIR}/qgsversion.inc "PROJECT_NUMBER = \"${COMPLETE_VERSION}-${RELEASE_NAME} (${SHA})\"\n") 44 ENDIF (EXISTS ${CMAKE_SOURCE_DIR}/.git/index) 45 46 ADD_CUSTOM_TARGET(version ALL DEPENDS ${CMAKE_BINARY_DIR}/qgsversion.h) 47ENDMACRO(CREATE_QGSVERSION) 48