79 lines
No EOL
2 KiB
CMake
79 lines
No EOL
2 KiB
CMake
cmake_minimum_required(VERSION 3.18)
|
|
project(ikarus)
|
|
|
|
option(LIBIKARUS_ENABLE_TESTS "Enable tests" OFF)
|
|
option(LIBIKARUS_ENABLE_LINTS "Enable linting" OFF)
|
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
|
|
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
|
|
|
|
add_subdirectory(vendor)
|
|
add_subdirectory(include)
|
|
add_subdirectory(src)
|
|
|
|
add_library(
|
|
libikarus SHARED
|
|
${INCLUDE_FILES}
|
|
${SOURCE_FILES}
|
|
)
|
|
|
|
target_include_directories(
|
|
libikarus PUBLIC
|
|
${CMAKE_CURRENT_LIST_DIR}/include
|
|
)
|
|
|
|
target_include_directories(
|
|
libikarus PRIVATE
|
|
${CMAKE_CURRENT_LIST_DIR}/src
|
|
)
|
|
|
|
target_link_libraries(
|
|
libikarus PRIVATE
|
|
Catch2::Catch2WithMain
|
|
)
|
|
|
|
target_link_libraries(
|
|
libikarus PRIVATE
|
|
cppbase
|
|
sqlitecpp
|
|
)
|
|
|
|
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 libikarus PROPERTY CXX_INCLUDE_WHAT_YOU_USE ${IWYU_PATH})
|
|
string(
|
|
CONCAT CLANG_TIDY_OPTIONS
|
|
"-checks=-*,"
|
|
"bugprone-*,"
|
|
"concurrency-*,"
|
|
"cppcoreguidelines-*,-cppcoreguidelines-pro-type-reinterpret-cast,-cppcoreguidelines-avoid-magic-numbers,-cppcoreguidelines-pro-type-union-access,"
|
|
"misc-*,"
|
|
"modernize-*,-modernize-use-trailing-return-type,"
|
|
"performance-*,"
|
|
"portability-*,"
|
|
"readability-*,-readability-identifier-length,-readability-magic-numbers,-readability-function-cognitive-complexity"
|
|
)
|
|
|
|
set_property(
|
|
TARGET libikarus
|
|
PROPERTY CXX_CLANG_TIDY ${CLANG_TIDY_PATH};${CLANG_TIDY_OPTIONS}
|
|
)
|
|
endif ()
|
|
|
|
if (LIBIKARUS_ENABLE_TESTS)
|
|
add_executable(libikarus_tests ${SOURCE_FILES})
|
|
target_link_libraries(libikarus_tests PRIVATE Catch2::Catch2WithMain)
|
|
|
|
target_include_directories(
|
|
libikarus_tests PUBLIC
|
|
${CMAKE_CURRENT_LIST_DIR}/include
|
|
)
|
|
|
|
include(CTest)
|
|
include(vendor/catch2/extras/Catch.cmake)
|
|
catch_discover_tests(libikarus_tests)
|
|
endif () |