cmake_minimum_required(VERSION 3.16) project(ikvxx VERSION 0.1.0 LANGUAGES C CXX) option(IKVXX_BUILD_TESTS "Build iKvxx unit tests" ON) option(IKVXX_INSTALL "Install iKvxx" ON) set(IKV_BUILD_DEMOS OFF CACHE BOOL "" FORCE) set(IKV_BUILD_TESTS OFF CACHE BOOL "" FORCE) set(IKV_INSTALL OFF CACHE BOOL "" FORCE) add_subdirectory(third_party/iKv) set_target_properties(ikv PROPERTIES PUBLIC_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/third_party/iKv/include/ikv.h") add_library(ikvxx src/value.cpp) add_library(ikvxx::ikvxx ALIAS ikvxx) target_compile_features(ikvxx PUBLIC cxx_std_17) target_include_directories(ikvxx PUBLIC $ $) target_link_libraries(ikvxx PUBLIC ikv::ikv) if(MSVC) target_compile_options(ikvxx PRIVATE /W4 /permissive-) else() target_compile_options(ikvxx PRIVATE -Wall -Wextra -Wpedantic) endif() if(IKVXX_BUILD_TESTS) include(CTest) add_executable(ikvxx_tests tests/value_tests.cpp) target_link_libraries(ikvxx_tests PRIVATE ikvxx::ikvxx) target_compile_features(ikvxx_tests PRIVATE cxx_std_17) add_test(NAME ikvxx.value COMMAND ikvxx_tests) endif() if(IKVXX_INSTALL) include(GNUInstallDirs) include(CMakePackageConfigHelpers) install(TARGETS ikv ikvxx EXPORT ikvxxTargets) install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) install(EXPORT ikvxxTargets NAMESPACE ikvxx:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ikvxx) configure_package_config_file(cmake/ikvxxConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/ikvxxConfig.cmake" INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ikvxx) write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/ikvxxConfigVersion.cmake" VERSION ${PROJECT_VERSION} COMPATIBILITY SameMajorVersion) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ikvxxConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/ikvxxConfigVersion.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ikvxx) endif()