Files
iKvxx/CMakeLists.txt

53 lines
2.0 KiB
CMake
Raw Normal View History

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
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>)
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()