86 lines
2 KiB
CMake
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 17)
|
|
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$"
|
|
)
|