libikarus/CMakeLists.txt
Folling aec7e62545
improve cmake setup
Signed-off-by: Folling <mail@folling.io>
2025-04-15 12:08:09 +02:00

79 lines
1.7 KiB
CMake

cmake_minimum_required(VERSION 3.18)
project(ikarus)
option(LIBIKARUS_ENABLE_TESTS "Enable tests" OFF)
option(LIBIKARUS_ENABLE_LINTS "Enable linting" OFF)
option(LIBIKARUS_BUILD_DOCS "Build documentation" OFF)
add_subdirectory(vendor)
add_subdirectory(include)
add_subdirectory(src)
find_package(Boost COMPONENTS system filesystem REQUIRED)
add_library(
ikarus SHARED
${INCLUDE_FILES}
${SOURCE_FILES}
)
set_target_properties(
ikarus PROPERTIES
CXX_STANDARD 23
CXX_STANDARD_REQUIRED ON
POSITION_INDEPENDENT_CODE TRUE
)
target_include_directories(
ikarus PUBLIC
${CMAKE_CURRENT_LIST_DIR}/include
)
target_include_directories(
ikarus PRIVATE
${CMAKE_CURRENT_LIST_DIR}/src
)
target_link_libraries(
ikarus PRIVATE
cppbase
sqlitecpp
${Boost_LIBRARIES}
)
target_include_directories(
ikarus PRIVATE
${Boost_INCLUDE_DIR}
)
if (LIBIKARUS_ENABLE_LINTS)
find_program(IWYU_PATH NAMES include-what-you-use iwyu REQUIRED)
find_program(CLANG_TIDY_PATH NAMES clang-tidy REQUIRED)
set_property(TARGET ikarus PROPERTY CXX_INCLUDE_WHAT_YOU_USE ${IWYU_PATH})
set_property(
TARGET ikarus
PROPERTY CXX_CLANG_TIDY ${CLANG_TIDY_PATH};
)
endif ()
if (LIBIKARUS_BUILD_DOCS)
find_program(DOXYGEN_PATH NAMES doxygen REQUIRED)
add_custom_target(
libikarus_docs
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/docs
COMMAND ${DOXYGEN_PATH} DoxyFile
COMMENT "Generating documentation with Doxygen"
VERBATIM
)
add_dependencies(
ikarus
libikarus_docs
)
add_dependencies(
libikarus_tests
libikarus_docs
)
endif ()