docpp/CMakeLists.txt
2024-05-06 01:00:54 +02:00

86 lines
2 KiB
CMake

cmake_minimum_required(VERSION 3.1...3.29)
project(docpp LANGUAGES CXX VERSION 0.0.1)
if (MSVC)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
endif()
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
add_library(${PROJECT_NAME} SHARED)
target_sources(${PROJECT_NAME} PRIVATE
"src/docpp.cpp"
)
target_include_directories(${PROJECT_NAME} PRIVATE "${PROJECT_SOURCE_DIR}")
set_target_properties(${PROJECT_NAME} PROPERTIES
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION}
PUBLIC_HEADER "include/docpp.hpp"
)
install(TARGETS ${PROJECT_NAME}
EXPORT ${PROJECT_NAME}Targets
FILE_SET HEADERS
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
RUNTIME DESTINATION bin
PUBLIC_HEADER DESTINATION include/docpp
INCLUDES DESTINATION include)
set(INCLUDE_INSTALL_DIR include/)
include(CMakePackageConfigHelpers)
write_basic_package_version_file(
"${PROJECT_NAME}ConfigVersion.cmake"
VERSION ${PROJECT_VERSION}
COMPATIBILITY AnyNewerVersion)
install(EXPORT ${PROJECT_NAME}Targets
FILE ${PROJECT_NAME}Targets.cmake
NAMESPACE docpp::
DESTINATION lib/cmake/${PROJECT_NAME})
install(FILES "${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
DESTINATION lib/cmake/${PROJECT_NAME})
if (NOT ENABLE_TESTS)
return()
endif()
enable_testing()
find_package(Catch2 3 REQUIRED)
add_executable(${PROJECT_NAME}_test
tests/test.cpp
)
target_include_directories(${PROJECT_NAME}_test PRIVATE
"${PROJECT_SOURCE_DIR}"
)
target_link_libraries(${PROJECT_NAME}_test PRIVATE
Catch2::Catch2WithMain
)
include(CTest)
include(Catch)
catch_discover_tests(${PROJECT_NAME}_test)
add_custom_command(
TARGET ${PROJECT_NAME}_test
COMMENT "Run tests"
POST_BUILD
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure --rerun-failed -C
$<CONFIGURATION> -R "^${PROJECT_NAME}_test$"
)