diff --git a/.git_archival.txt b/.git_archival.txt new file mode 100644 index 00000000..00c7cfd7 --- /dev/null +++ b/.git_archival.txt @@ -0,0 +1,3 @@ +node: $Format:%H$ +node-date: $Format:%cI$ +describe-name: $Format:%(describe:tags=true,match=?[0-9.]*)$ \ No newline at end of file diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..82bf71c1 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +.git_archival.txt export-subst \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..31f6b5dd --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,28 @@ +cmake_minimum_required(VERSION 3.14 FATAL_ERROR) + +if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git/") + find_package(Git REQUIRED) + execute_process( + COMMAND "${GIT_EXECUTABLE}" describe --tags --match=?[0-9.]* + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + OUTPUT_VARIABLE DESCRIBE_NAME COMMAND_ERROR_IS_FATAL ANY + ) + set(CPM_DEVELOPMENT "-development-version") +else() + file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/.git_archival.txt" DESCRIBE_NAME + REGEX "^describe-name:.*" + ) +endif() + +string(REGEX MATCH "([0-9\\.]+)" EXTRACTED_CPM_VERSION "${DESCRIBE_NAME}") + +project( + CPM.cmake + VERSION "${EXTRACTED_CPM_VERSION}" + DESCRIPTION + "CMake's missing package manager. A small CMake script for setup-free, cross-platform, reproducible dependency management." + HOMEPAGE_URL "https://github.com/cpm-cmake/CPM.cmake" + LANGUAGES NONE +) + +include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/CPM.cmake") diff --git a/cmake/CPM.cmake b/cmake/CPM.cmake index 6e260791..69fa3bd7 100644 --- a/cmake/CPM.cmake +++ b/cmake/CPM.cmake @@ -42,7 +42,11 @@ if(NOT COMMAND cpm_message) endfunction() endif() -set(CURRENT_CPM_VERSION 1.0.0-development-version) +if(DEFINED EXTRACTED_CPM_VERSION) + set(CURRENT_CPM_VERSION "${EXTRACTED_CPM_VERSION}${CPM_DEVELOPMENT}") +else() + set(CURRENT_CPM_VERSION 1.0.0-development-version) +endif() get_filename_component(CPM_CURRENT_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}" REALPATH) if(CPM_DIRECTORY)