먼 옛 날, CVS, Subversion 등에서 소스의 특정 태그를 커밋로그나 뭐 그런 걸로 수정해주는 경우가 있었는데, GIT에서는 그런 거 얄짤 없고, CMake에서도 정식 모듈로 주어지는 것이 없으니, 사부작사부작 만들어 보았다. find_package(Git) # GIT 태그를 읽어와 GIT_TAG_VERSION_RAW 이라는 변수로 넣는다. execute_process( COMMAND "${GIT_EXECUTABLE}" describe HEAD --tags WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" OUTPUT_VARIABLE GIT_TAG_VERSION_RAW ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) # GIT 브랜치를 읽어와 GIT_BRANCH 라는 변수로 넣는다. execute_process( COMMAND "${GIT_EXECUTABLE}" rev-parse --abbrev-ref HEAD WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" OUTPUT_VARIABLE GIT_BRANCH ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) # vX.X.X 형식을 x.x.x 형태로 변환한다. string(REGEX REPLACE "^v([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\1.\\2.\\3" GIT_TAG_VERSION "${GIT_TAG_VERSION_RAW}") # 프로젝트 버전 세팅 project(myProject VERSION ${GIT_TAG_VERSION}) # CPack용 버전 세팅 set(CPACK_PACKAGE_NAME ${PROJECT_NAME}) set(CPACK_PACKAGE_VERS...