vcpkg-cmake-template/CMakeLists.txt
2024-08-03 19:17:36 +02:00

56 lines
1.7 KiB
CMake

cmake_minimum_required(VERSION 3.19)
option(USE_VCPKG "Use VCPKG for dependency management" ON)
if(USE_VCPKG)
set(ENV{VCPKG_DISABLE_METRICS} 1)
set(VCPKG_BOOTSTRAP_OPTIONS CACHE STRING "--disableMetrics" FORCE)
include(FetchContent)
FetchContent_Declare(vcpkg
GIT_REPOSITORY https://github.com/microsoft/vcpkg/
GIT_TAG 2024.07.12
)
FetchContent_MakeAvailable(vcpkg)
set(CMAKE_TOOLCHAIN_FILE "${vcpkg_SOURCE_DIR}/scripts/buildsystems/vcpkg.cmake" CACHE FILEPATH "")
endif()
project(p2300 VERSION 0.1 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(CLI11 CONFIG REQUIRED)
find_package(stdexec CONFIG REQUIRED)
# Remove problematic flag that trips up clangd
get_target_property(STDEXEC_OPTIONS STDEXEC::stdexec INTERFACE_COMPILE_OPTIONS)
if(STDEXEC_OPTIONS)
list(REMOVE_ITEM STDEXEC_OPTIONS "$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-fconcepts-diagnostics-depth=10>")
set_target_properties(STDEXEC::stdexec PROPERTIES INTERFACE_COMPILE_OPTIONS "${STDEXEC_OPTIONS}")
endif()
add_executable(${PROJECT_NAME} src/${PROJECT_NAME}.cc)
# Enable LTO for Release builds, we always want this until explicitly overriden
include(CheckIPOSupported)
check_ipo_supported(RESULT supported OUTPUT error)
if(supported)
set_target_properties(${PROJECT_NAME} PROPERTIES
INTERPROCEDURAL_OPTIMIZATION_RELEASE TRUE
INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO TRUE
)
endif()
target_compile_options(${PROJECT_NAME} PRIVATE
-fmodulo-sched
"$<$<CXX_COMPILER_ID:GNU>:-frecord-gcc-switches>"
)
target_link_libraries(${PROJECT_NAME} PRIVATE
CLI11::CLI11
STDEXEC::stdexec
)
# Install
install(TARGETS ${PROJECT_NAME})