cmake defaults

This commit is contained in:
Erik Fröjdh 2024-10-30 08:58:42 +01:00
parent b037aebc5f
commit b37f4845cf
3 changed files with 28 additions and 33 deletions

View File

@ -23,26 +23,25 @@ include(FetchContent)
include(cmake/helpers.cmake) include(cmake/helpers.cmake)
default_build_type("Release") default_build_type("Release")
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH}) set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
option(AARE_USE_WARNINGS "Enable warnings" ON)
# General options
option(AARE_PYTHON_BINDINGS "Build python bindings" ON) option(AARE_PYTHON_BINDINGS "Build python bindings" ON)
option(AARE_TESTS "Build tests" ON) option(AARE_TESTS "Build tests" OFF)
option(AARE_EXAMPLES "Build examples" ON) option(AARE_EXAMPLES "Build examples" OFF)
option(AARE_IN_GITHUB_ACTIONS "Running in Github Actions" OFF) option(AARE_IN_GITHUB_ACTIONS "Running in Github Actions" OFF)
option(AARE_DOCS "Build documentation" OFF) option(AARE_DOCS "Build documentation" OFF)
# Configure which of the dependencies to use FetchContent for
option(AARE_FETCH_FMT "Use FetchContent to download fmt" ON) option(AARE_FETCH_FMT "Use FetchContent to download fmt" ON)
option(AARE_FETCH_PYBIND11 "Use FetchContent to download pybind11" ON) option(AARE_FETCH_PYBIND11 "Use FetchContent to download pybind11" ON)
option(AARE_FETCH_CATCH "Use FetchContent to download catch2" ON) option(AARE_FETCH_CATCH "Use FetchContent to download catch2" ON)
option(AARE_FETCH_JSON "Use FetchContent to download nlohmann::json" ON) option(AARE_FETCH_JSON "Use FetchContent to download nlohmann::json" ON)
option(AARE_FETCH_ZMQ "Use FetchContent to download libzmq" ON) option(AARE_FETCH_ZMQ "Use FetchContent to download libzmq" ON)
option(ENABLE_DRAFTS "Enable zmq drafts (depends on gnutls or nss)" OFF)
#Convenience option to use system libraries #Convenience option to use system libraries only (no FetchContent)
option(AARE_SYSTEM_LIBRARIES "Use system libraries" OFF) option(AARE_SYSTEM_LIBRARIES "Use system libraries" OFF)
if(AARE_SYSTEM_LIBRARIES) if(AARE_SYSTEM_LIBRARIES)
message(STATUS "Build using system libraries") message(STATUS "Build using system libraries")
@ -51,7 +50,6 @@ if(AARE_SYSTEM_LIBRARIES)
set(AARE_FETCH_CATCH OFF CACHE BOOL "Disabled FetchContent for catch2" FORCE) set(AARE_FETCH_CATCH OFF CACHE BOOL "Disabled FetchContent for catch2" FORCE)
set(AARE_FETCH_JSON OFF CACHE BOOL "Disabled FetchContent for nlohmann::json" FORCE) set(AARE_FETCH_JSON OFF CACHE BOOL "Disabled FetchContent for nlohmann::json" FORCE)
set(AARE_FETCH_ZMQ OFF CACHE BOOL "Disabled FetchContent for libzmq" FORCE) set(AARE_FETCH_ZMQ OFF CACHE BOOL "Disabled FetchContent for libzmq" FORCE)
endif() endif()
@ -181,32 +179,27 @@ else()
INTERFACE INTERFACE
-Og -Og
-ggdb3 -ggdb3
# -D_GLIBCXX_DEBUG # causes errors with boost
-D_GLIBCXX_DEBUG_PEDANTIC
) )
endif() endif()
if(AARE_USE_WARNINGS) # Common flags for GCC and Clang
target_compile_options( target_compile_options(
aare_compiler_flags aare_compiler_flags
INTERFACE INTERFACE
-Wall -Wall
-Wextra -Wextra
-pedantic -pedantic
-Wshadow -Wshadow
-Wnon-virtual-dtor -Wnon-virtual-dtor
-Woverloaded-virtual -Woverloaded-virtual
-Wdouble-promotion -Wdouble-promotion
-Wformat=2 -Wformat=2
-Wredundant-decls -Wredundant-decls
-Wvla -Wvla
-Wdouble-promotion -Wdouble-promotion
-Werror=return-type #important can cause segfault in optimzed builds -Werror=return-type #important can cause segfault in optimzed builds
) )
endif()
endif() #GCC/Clang specific endif() #GCC/Clang specific
@ -266,7 +259,6 @@ target_include_directories(aare_core PUBLIC
target_link_libraries(aare_core PUBLIC fmt::fmt PRIVATE aare_compiler_flags nlohmann_json::nlohmann_json) target_link_libraries(aare_core PUBLIC fmt::fmt PRIVATE aare_compiler_flags nlohmann_json::nlohmann_json)
set_target_properties(aare_core PROPERTIES set_target_properties(aare_core PROPERTIES
# ARCHIVE_OUTPUT_NAME SlsDetectorStatic
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}
PUBLIC_HEADER "${PUBLICHEADERS}" PUBLIC_HEADER "${PUBLICHEADERS}"
) )

View File

@ -1,3 +1,6 @@
find_package (Python 3.6 COMPONENTS Interpreter Development)
# Download or find pybind11 depending on configuration # Download or find pybind11 depending on configuration
if(AARE_FETCH_PYBIND11) if(AARE_FETCH_PYBIND11)
FetchContent_Declare( FetchContent_Declare(

View File

@ -1,4 +1,5 @@
# Download catch2 if configured to do so
if (AARE_FETCH_CATCH) if (AARE_FETCH_CATCH)
FetchContent_Declare( FetchContent_Declare(
Catch2 Catch2
@ -8,6 +9,7 @@ if (AARE_FETCH_CATCH)
) )
FetchContent_MakeAvailable(Catch2) FetchContent_MakeAvailable(Catch2)
else() else()
# Otherwise look for installed catch2
find_package(Catch2 3 REQUIRED) find_package(Catch2 3 REQUIRED)
endif() endif()
@ -32,11 +34,9 @@ set(TestSources
target_sources(tests PRIVATE ${TestSources} ) target_sources(tests PRIVATE ${TestSources} )
#Work around to remove, this is not the way to do it =) #Work around to remove, this is not the way to do it =)
# target_include_directories(tests PRIVATE ${CMAKE_SOURCE_DIR}/include/common)
target_link_libraries(tests PRIVATE aare_core aare_compiler_flags) target_link_libraries(tests PRIVATE aare_core aare_compiler_flags)
#configure a header to pass test file paths #configure a header to pass test file paths
get_filename_component(TEST_FILE_PATH ${PROJECT_SOURCE_DIR}/data ABSOLUTE) get_filename_component(TEST_FILE_PATH ${PROJECT_SOURCE_DIR}/data ABSOLUTE)
configure_file(test_config.hpp.in test_config.hpp) configure_file(test_config.hpp.in test_config.hpp)