22# Standalone script to retrieve versioning information from Git or .git_archival.txt.
33# Customizable for any project by setting variables before including this file.
44
5- # Configurable variables (set these in your main CMakeLists.txt if needed) :
5+ # Configurable variables:
66# - VERSION_PREFIX: Prefix for version tags (default: "v").
77# - VERSION_SURFIX: Suffix for version tags (default: "[~+-]([a-zA-Z0-9]+)").
88# - VERSION_REGEX: Regex to extract version (default: "(?[0-9]+\\.[0-9]+\\.[0-9]+)").
99# - ARCHIVAL_FILE: Path to .git_archival.txt (default: "${CMAKE_SOURCE_DIR}/.git_archival.txt").
10+ # - DESCRIBE_NAME_KEY: Key for describe name in .git_archival.txt (default: "describe-name: ").
11+ # - COMMIT_HASH_KEY: Key for commit hash in .git_archival.txt (default: "commit: ").
1012
11- # Default Format Example: 1.2.3 v1.2.3 v1.2.3-rc1
13+ # Default Format Example:
14+ # 1.2.3 v1.2.3 v1.2.3-rc1
1215
1316set (VERSION_PREFIX "v" CACHE STRING "Prefix used in version tags" )
1417set (VERSION_SUFFIX "[~+-]([a-zA-Z0-9]+)" CACHE STRING "Suffix used in version tags" )
1518set (VERSION_REGEX "?([0-9]+\\ .[0-9]+\\ .[0-9]+)" CACHE STRING "Regex for extracting version" )
1619set (ARCHIVAL_FILE "${CMAKE_SOURCE_DIR} /.git_archival.txt" CACHE STRING "Path to .git_archival.txt" )
20+ set (DESCRIBE_NAME_KEY "describe-name: " CACHE STRING "Key for describe name in .git_archival.txt" )
21+ set (COMMIT_HASH_KEY "commit: " CACHE STRING "Key for commit hash in .git_archival.txt" )
1722
1823
24+ # Combine prefix and regex
1925set (VERSION_REGEX_WITH_PREFIX "^${VERSION_PREFIX}${VERSION_REGEX} " )
2026
2127# Ensure Git is available
2228find_package (Git REQUIRED)
2329
2430# Attempt to retrieve version from Git
25- if (EXISTS "${CMAKE_SOURCE_DIR} /.git " AND GIT_FOUND)
31+ if (EXISTS "${CMAKE_SOURCE_DIR} /.gits " AND GIT_FOUND)
2632 message (STATUS "Using git describe for versioning" )
2733
2834 # Extract the version string
@@ -46,16 +52,16 @@ else()
4652 file (READ "${ARCHIVAL_FILE} " ARCHIVAL_CONTENT)
4753
4854 # Extract the describe-name line
49- string (REGEX MATCH "describe-name: ([^\\ n]+)" VERSION_STRING "${ARCHIVAL_CONTENT} " )
50- if (VERSION_STRING MATCHES "describe-name: (.*)" )
55+ string (REGEX MATCH "${DESCRIBE_NAME_KEY} ([^\\ n]+)" VERSION_STRING "${ARCHIVAL_CONTENT} " )
56+ if (VERSION_STRING MATCHES "${DESCRIBE_NAME_KEY} (.*)" )
5157 set (VERSION_STRING "${CMAKE_MATCH_1} " )
5258 else ()
5359 message (FATAL_ERROR "Could not extract version from ${ARCHIVAL_FILE} " )
5460 endif ()
5561
5662 # Extract the commit hash
57- string (REGEX MATCH "commit: ([a-f0-9]+)" COMMIT_HASH "${ARCHIVAL_CONTENT} " )
58- if (COMMIT_HASH MATCHES "commit: ([a-f0-9]+)" )
63+ string (REGEX MATCH "${COMMIT_HASH_KEY} ([a-f0-9]+)" COMMIT_HASH "${ARCHIVAL_CONTENT} " )
64+ if (COMMIT_HASH MATCHES "${COMMIT_HASH_KEY} ([a-f0-9]+)" )
5965 set (COMMIT_HASH "${CMAKE_MATCH_1} " )
6066 else ()
6167 message (FATAL_ERROR "Could not extract commit hash from ${ARCHIVAL_FILE} " )
@@ -116,4 +122,4 @@ set(PROJECT_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
116122set (PROJECT_COMMIT_HASH "${COMMIT_HASH} " )
117123set (PROJECT_DIRTY_STATE "${DIRTY_STATE} " )
118124set (PROJECT_DEV_STATE "${DEV_STATE} " )
119- set (PROJECT_COMMIT_COUNT "${COMMIT_COUNT} " )
125+ set (PROJECT_COMMIT_COUNT "${COMMIT_COUNT} " )
0 commit comments