cmake_minimum_required(VERSION 3.25) project(modulus VERSION 0.1.0 LANGUAGES CXX) include(GNUInstallDirs) include(CMakePackageConfigHelpers) include(CTest) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) option(MODULUS_WITH_OPENSSL "Enable the modulus OpenSSL bridge target" OFF) option(MODULUS_WITH_SQLITE "Enable the modulus SQLite bridge target" OFF) option(MODULUS_WITH_RAYLIB "Enable the modulus raylib bridge target" OFF) option(MODULUS_WITH_MINIAUDIO "Enable the modulus miniaudio bridge target" OFF) include(cmake/modulus_third_party.cmake) if(MODULUS_WITH_OPENSSL) modulus_require_openssl() endif() if(MODULUS_WITH_SQLITE) modulus_require_sqlite() endif() if(MODULUS_WITH_RAYLIB) modulus_require_raylib() endif() if(MODULUS_WITH_MINIAUDIO) modulus_require_miniaudio() endif() add_library(modulus src/config.cpp src/error.cpp src/json_config.cpp src/log.cpp ) target_include_directories(modulus PUBLIC $ $ ) target_compile_features(modulus PUBLIC cxx_std_23) target_link_libraries(modulus PUBLIC Boost::boost Boost::json ) add_library(modulus::modulus ALIAS modulus) if(BUILD_TESTING) add_subdirectory(tests) endif() install(TARGETS modulus EXPORT modulus-targets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) install(EXPORT modulus-targets NAMESPACE modulus:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/modulus ) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modulus_third_party.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/modulus ) configure_package_config_file( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modulus_config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/modulus-config.cmake INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/modulus ) write_basic_package_version_file( ${CMAKE_CURRENT_BINARY_DIR}/modulus-config-version.cmake VERSION ${PROJECT_VERSION} COMPATIBILITY SameMajorVersion ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/modulus-config.cmake ${CMAKE_CURRENT_BINARY_DIR}/modulus-config-version.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/modulus )