cmake_minimum_required(VERSION 3.20) project(libmonet VERSION 0.1.0 LANGUAGES CXX) # Header only: nothing to build, nothing to link, only the include directory. add_library(monet INTERFACE) add_library(monet::monet ALIAS monet) target_include_directories(monet INTERFACE $ $) target_compile_features(monet INTERFACE cxx_std_20) option(MONET_BUILD_TESTS "Build the tests" ${PROJECT_IS_TOP_LEVEL}) if(MONET_BUILD_TESTS) enable_testing() add_executable(monet_tests tests/test_monet.cpp) target_link_libraries(monet_tests PRIVATE monet) target_compile_options(monet_tests PRIVATE -Wall -Wextra -Wshadow) add_test(NAME monet COMMAND monet_tests) endif() if(PROJECT_IS_TOP_LEVEL) install(DIRECTORY include/ DESTINATION include) install(TARGETS monet EXPORT monetTargets) install(EXPORT monetTargets NAMESPACE monet:: DESTINATION lib/cmake/monet) file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/monetConfig.cmake "include(\"\${CMAKE_CURRENT_LIST_DIR}/monetTargets.cmake\")\n") install(FILES ${CMAKE_CURRENT_BINARY_DIR}/monetConfig.cmake DESTINATION lib/cmake/monet) endif()