cmake_minimum_required(VERSION 3.25) project(luma 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 raylib) add_library(luma src/detail/errors.cpp src/animation.cpp src/application.cpp src/detail/raylib_backend.cpp src/assets.cpp src/config.cpp src/control.cpp src/controls.cpp src/detail/control_geometry.cpp src/basic_controls.cpp src/text_controls.cpp src/layout_controls.cpp src/text_input.cpp src/overlays.cpp src/routing.cpp src/theme.cpp src/window.cpp ) target_include_directories(luma PUBLIC $ $ ) target_compile_features(luma PUBLIC cxx_std_23) target_compile_definitions(luma PRIVATE LUMA_RAYLIB_CUSTOM_FRAME_CONTROL=1 ) target_link_libraries(luma PUBLIC modulus::modulus modulus::boost_json modulus::raylib ) add_library(luma::luma ALIAS luma) if(BUILD_TESTING) add_subdirectory(tests) endif() install(TARGETS luma EXPORT luma_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 luma_targets NAMESPACE luma:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/luma ) configure_package_config_file( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/luma_config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/lumaConfig.cmake INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/luma ) write_basic_package_version_file( ${CMAKE_CURRENT_BINARY_DIR}/lumaConfigVersion.cmake VERSION ${PROJECT_VERSION} COMPATIBILITY SameMajorVersion ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/lumaConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/lumaConfigVersion.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/luma )