Add CPM support

This commit is contained in:
sha512sum 2024-07-06 00:32:33 +00:00
parent 9982b60400
commit a6d74aff8f

View file

@ -2,11 +2,35 @@ cmake_minimum_required(VERSION 3.27)
project(utempl project(utempl
VERSION 0.1) VERSION 0.1)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
find_package(fmt REQUIRED)
find_package(Boost 1.84.0 REQUIRED)
set(CMAKE_CXX_STANDART 20) set(CMAKE_CXX_STANDART 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CXX_EXTENSIONS NO) set(CXX_EXTENSIONS NO)
set(BOOST_INCLUDE_LIBRARIES "pfr")
option(CPM_USE_LOCAL_PACKAGES "Use local packages" ON)
file(
DOWNLOAD
https://github.com/cpm-cmake/CPM.cmake/releases/download/v0.40.0/CPM.cmake
${CMAKE_CURRENT_BINARY_DIR}/cmake/CPM.cmake
EXPECTED_HASH
SHA256=7b354f3a5976c4626c876850c93944e52c83ec59a159ae5de5be7983f0e17a2a
)
include(${CMAKE_CURRENT_BINARY_DIR}/cmake/CPM.cmake)
CPMAddPackage(
NAME Boost
VERSION 1.85.0
URL "https://github.com/boostorg/boost/releases/download/boost-1.85.0/boost-1.85.0-cmake.tar.xz"
EXCLUDE_FROM_ALL ON
OPTIONS "BOOST_SKIP_INSTALL_RULES OFF"
)
CPMAddPackage("gh:fmtlib/fmt#10.2.1")
cmake_policy(SET CMP0079 NEW) cmake_policy(SET CMP0079 NEW)
@ -16,8 +40,13 @@ target_include_directories(
utempl utempl
INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>) $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
target_link_libraries(utempl INTERFACE fmt::fmt-header-only ${Boost_LIBRARIES})
if(TARGET Boost::pfr)
target_link_libraries(utempl INTERFACE fmt::fmt-header-only Boost::pfr)
else()
find_package(Boost 1.85.0 REQUIRED)
target_link_libraries(utempl INTERFACE fmt::fmt-header-only ${Boost_LIBRARIES})
endif()
target_compile_features(utempl INTERFACE cxx_std_20) target_compile_features(utempl INTERFACE cxx_std_20)
install(TARGETS utempl install(TARGETS utempl