|
| 1 | +cmake_minimum_required(VERSION 3.14 FATAL_ERROR) |
| 2 | + |
| 3 | +project(CPM VERSION 0.37.0 LANGUAGES NONE) |
| 4 | + |
| 5 | +option(CPM_INSTALL "Install CPM" OFF) |
| 6 | + |
| 7 | +include(CMakePackageConfigHelpers) |
| 8 | +configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/CPMConfig.cmake.in" |
| 9 | + "${CMAKE_CURRENT_BINARY_DIR}/CPMConfig.cmake" |
| 10 | + INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/CPM" |
| 11 | + ) |
| 12 | +write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/CPMConfigVersion.cmake" COMPATIBILITY SameMajorVersion ARCH_INDEPENDENT) |
| 13 | + |
| 14 | +# For consumer using FetchContent |
| 15 | +if(NOT ${CMAKE_PROJECT_NAME} STREQUAL ${PROJECT_NAME}) |
| 16 | + # Trick to use the find_package |
| 17 | + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/CPM.cmake" "${CMAKE_CURRENT_BINARY_DIR}/CPM.cmake" COPYONLY) |
| 18 | + set(CPM_DIR "${CMAKE_CURRENT_BINARY_DIR}") |
| 19 | + find_package(CPM CONFIG REQUIRED NO_POLICY_SCOPE) |
| 20 | + # Check if the user download the repo with git and not in an official release |
| 21 | + if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git" AND IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/.git") |
| 22 | + find_package(Git REQUIRED QUIET) |
| 23 | + # Generate a git-describe version string from Git repository tags. |
| 24 | + execute_process( |
| 25 | + COMMAND ${GIT_EXECUTABLE} tag --points-at HEAD |
| 26 | + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
| 27 | + OUTPUT_VARIABLE CPM_TAG |
| 28 | + RESULT_VARIABLE GIT_DESCRIBE_ERROR_CODE |
| 29 | + OUTPUT_STRIP_TRAILING_WHITESPACE |
| 30 | + ) |
| 31 | + if(NOT GIT_DESCRIBE_ERROR_CODE AND NOT CPM_TAG STREQUAL "") |
| 32 | + set(CPM_RELEASE TRUE) |
| 33 | + else() |
| 34 | + set(CPM_RELEASE FALSE) |
| 35 | + endif() |
| 36 | + endif() |
| 37 | +endif() |
| 38 | + |
| 39 | +if(CPM_INSTALL) |
| 40 | + ## Without it : Unable to determine default CMAKE_INSTALL_LIBDIR directory because no target architecture is known. Please enable at least one language before including GNUInstallDirs. |
| 41 | + enable_language(C) |
| 42 | + include(GNUInstallDirs) |
| 43 | + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/CPMConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/CPMConfigVersion.cmake" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/CPM.cmake" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/CPM") |
| 44 | +endif() |
0 commit comments