79 lines
1.6 KiB
CMake
79 lines
1.6 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}
|
|
)
|
|
|
|
add_dependencies(
|
|
ikarus
|
|
flatbuffer_headers
|
|
)
|
|
|
|
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
|
|
)
|
|
endif ()
|