nixos/packages/biu/CMakeLists.txt

84 lines
4.2 KiB
CMake
Raw Permalink Normal View History

2024-04-02 11:08:47 +08:00
cmake_minimum_required(VERSION 3.14)
project(biu LANGUAGES CXX)
enable_testing()
include(GNUInstallDirs)
option(BUILD_SHARED_LIBS "Build using shared libraries" ON)
2024-04-02 11:08:47 +08:00
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
message("Setting build type to 'Release' as none was specified.")
set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
endif()
find_package(magic_enum REQUIRED)
find_package(fmt REQUIRED)
2024-08-24 14:10:55 +08:00
find_package(Boost REQUIRED COMPONENTS headers iostreams filesystem system)
2024-04-02 11:08:47 +08:00
find_package(range-v3 REQUIRED)
find_path(NAMEOF_INCLUDE_DIR nameof.hpp REQUIRED)
find_package(Eigen3 REQUIRED)
2024-09-04 10:39:12 +08:00
set(HIGHFIVE_FIND_HDF5 Off)
2024-08-22 20:57:44 +08:00
find_package(HighFive REQUIRED)
2024-08-24 14:10:55 +08:00
find_path(ZPP_BITS_INCLUDE_DIR zpp_bits.h REQUIRED)
find_package(TgBot REQUIRED)
find_path(LIBBACKTRACE_INCLUDE_DIR backtrace.h REQUIRED)
find_library(LIBBACKTRACE_LIBRARY NAMES backtrace REQUIRED)
2024-09-04 10:39:12 +08:00
find_package(HDF5 REQUIRED)
2024-09-04 18:22:07 +08:00
find_package(concurrencpp REQUIRED)
2024-09-07 17:13:32 +08:00
find_path(POCKETFFT_INCLUDE_DIR pocketfft.h REQUIRED)
2024-09-12 02:21:20 +08:00
find_package(yaml-cpp REQUIRED)
2024-04-02 11:08:47 +08:00
2024-08-24 14:10:55 +08:00
add_library(biu src/common.cpp src/hdf5.cpp src/logger.cpp src/string.cpp)
target_include_directories(biu PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
2024-08-24 14:10:55 +08:00
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> ${NAMEOF_INCLUDE_DIR} ${ZPP_BITS_INCLUDE_DIR}
2024-09-07 17:13:32 +08:00
${LIBBACKTRACE_INCLUDE_DIR} ${POCKETFFT_INCLUDE_DIR})
2024-06-19 20:06:12 +08:00
target_link_libraries(biu PUBLIC magic_enum::magic_enum fmt::fmt Boost::headers Boost::iostreams Boost::filesystem
2024-09-12 02:21:20 +08:00
range-v3::range-v3 Eigen3::Eigen HighFive TgBot::TgBot ${LIBBACKTRACE_LIBRARY} hdf5::hdf5 concurrencpp::concurrencpp
yaml-cpp::yaml-cpp)
2024-09-04 18:22:07 +08:00
target_compile_features(biu PUBLIC cxx_std_23)
target_compile_options(biu PUBLIC -Wno-gnu-string-literal-operator-template)
install(TARGETS biu EXPORT biuTargets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
2024-04-02 11:08:47 +08:00
install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
install(EXPORT biuTargets FILE biuTargets.cmake NAMESPACE biu:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/biu)
install(FILES biuConfig.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/biu)
2024-04-02 11:08:47 +08:00
get_property(ImportedTargets DIRECTORY "${CMAKE_SOURCE_DIR}" PROPERTY IMPORTED_TARGETS)
message("Imported targets: ${ImportedTargets}")
message("List of compile features: ${CMAKE_CXX_COMPILE_FEATURES}")
2024-06-19 20:06:12 +08:00
include(CTest)
add_executable(test-serialize test/serialize.cpp)
target_link_libraries(test-serialize PRIVATE biu)
set_property(TARGET test-serialize PROPERTY CXX_STANDARD 23 CXX_STANDARD_REQUIRED ON)
add_test(NAME test-serialize COMMAND test-serialize)
add_executable(test-process test/process.cpp)
target_link_libraries(test-process PRIVATE biu)
set_property(TARGET test-process PROPERTY CXX_STANDARD 23 CXX_STANDARD_REQUIRED ON)
add_test(NAME test-process COMMAND test-process)
2024-08-18 23:34:51 +08:00
add_executable(test-eigen test/eigen.cpp)
target_link_libraries(test-eigen PRIVATE biu)
set_property(TARGET test-eigen PROPERTY CXX_STANDARD 23 CXX_STANDARD_REQUIRED ON)
add_test(NAME test-eigen COMMAND test-eigen)
2024-08-22 20:39:34 +08:00
add_executable(test-common test/common.cpp)
target_link_libraries(test-common PRIVATE biu)
set_property(TARGET test-common PROPERTY CXX_STANDARD 23 CXX_STANDARD_REQUIRED ON)
add_test(NAME test-common COMMAND test-common)
2024-08-23 09:31:33 +08:00
add_executable(test-format test/format.cpp)
target_link_libraries(test-format PRIVATE biu)
set_property(TARGET test-format PROPERTY CXX_STANDARD 23 CXX_STANDARD_REQUIRED ON)
add_test(NAME test-format COMMAND test-format)
2024-08-23 17:23:28 +08:00
add_executable(test-atomic test/atomic.cpp)
target_link_libraries(test-atomic PRIVATE biu)
set_property(TARGET test-atomic PROPERTY CXX_STANDARD 23 CXX_STANDARD_REQUIRED ON)
add_test(NAME test-atomic COMMAND test-atomic)
2024-09-04 10:39:12 +08:00
add_executable(test-hdf5 test/hdf5.cpp)
target_link_libraries(test-hdf5 PRIVATE biu)
set_property(TARGET test-hdf5 PROPERTY CXX_STANDARD 23 CXX_STANDARD_REQUIRED ON)
add_test(NAME test-hdf5 COMMAND test-hdf5)
2024-09-12 02:21:20 +08:00
add_executable(test-yaml test/yaml.cpp)
target_link_libraries(test-yaml PRIVATE biu)
set_property(TARGET test-yaml PROPERTY CXX_STANDARD 23 CXX_STANDARD_REQUIRED ON)
add_test(NAME test-yaml COMMAND test-yaml)