53 lines
2.0 KiB
CMake
53 lines
2.0 KiB
CMake
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()
|