cmake_minimum_required(VERSION 3.25) project(ligo 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) find_package(modulus CONFIG REQUIRED COMPONENTS boost_json openssl) add_library(ligo src/config.cpp src/detail/errors.cpp src/detail/lifecycle.cpp src/detail/transport.cpp src/http.cpp src/net.cpp src/security.cpp src/service.cpp src/tcp.cpp src/udp.cpp ) target_include_directories(ligo PUBLIC $ $ ) target_compile_features(ligo PUBLIC cxx_std_23) target_link_libraries(ligo PUBLIC modulus::modulus modulus::boost_json modulus::openssl ) add_library(ligo::ligo ALIAS ligo) if(BUILD_TESTING) add_subdirectory(tests) endif() install(TARGETS ligo EXPORT ligo_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 ligo_targets NAMESPACE ligo:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ligo ) configure_package_config_file( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/ligo_config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/ligoConfig.cmake INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ligo ) write_basic_package_version_file( ${CMAKE_CURRENT_BINARY_DIR}/ligoConfigVersion.cmake VERSION ${PROJECT_VERSION} COMPATIBILITY SameMajorVersion ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ligoConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/ligoConfigVersion.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ligo )