cmake: add versioning module

This commit is contained in:
Konstantin Lampalzer 2024-09-23 13:34:10 +02:00
parent 7ae7155f25
commit 1791063fa8
2 changed files with 43 additions and 3 deletions

View file

@ -1,3 +1,15 @@
#########
# Setup #
#########
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
include(Versioning)
########
# Main #
########
# After installation this project can be found by 'find_package' command: # After installation this project can be found by 'find_package' command:
# #
# find_package(libcreate REQUIRED) # find_package(libcreate REQUIRED)
@ -6,11 +18,14 @@
# #
cmake_minimum_required(VERSION 3.28) cmake_minimum_required(VERSION 3.28)
project(libcreate) project(
libcreate
VERSION ${TAG_VERSION_MAJOR}.${TAG_VERSION_MINOR}.${TAG_VERSION_PATCH}
)
add_compile_options(-Wall -Wextra -Wpedantic) add_compile_options(-Wall -Wextra -Wpedantic)
set(PACKAGE_VERSION 3.0.0) set(PACKAGE_VERSION ${TAG_VERSION_MAJOR}.${TAG_VERSION_MINOR}.${TAG_VERSION_PATCH})
option(LIBCREATE_BUILD_TESTS "Enable the build of tests." ON) option(LIBCREATE_BUILD_TESTS "Enable the build of tests." ON)
@ -208,5 +223,4 @@ endif()
# Packaging # # Packaging #
############# #############
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
include(Packing) include(Packing)

26
cmake/Versioning.cmake Normal file
View file

@ -0,0 +1,26 @@
find_package(Git)
if(GIT_EXECUTABLE)
execute_process(
COMMAND ${GIT_EXECUTABLE} describe --tags
OUTPUT_VARIABLE TAG_VERSION
RESULT_VARIABLE ERROR_CODE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(TAG_VERSION STREQUAL "")
set(TAG_VERSION 0.0.0)
message(WARNING "Failed to determine version from Git tags. Using default version \"${TAG_VERSION}\".")
endif()
message(STATUS "Project version: ${TAG_VERSION}")
# Split into major, minor, patch
string(
REGEX MATCH "([0-9]+)\\.([0-9]+)\\.([0-9]+)"
TAG_VERSION_MATCH ${TAG_VERSION}
)
set(TAG_VERSION_MAJOR ${CMAKE_MATCH_1})
set(TAG_VERSION_MINOR ${CMAKE_MATCH_2})
set(TAG_VERSION_PATCH ${CMAKE_MATCH_3})
endif()