cmake_minimum_required(VERSION 3.13) set(CMAKE_POLICY_VERSION_MINIMUM 3.5) set(CMAKE_CXX_STANDARD 23) set(CMAKE_BUILD_TYPE Debug) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_MESSAGE_LOG_LEVEL TRACE) set(CMAKE_VERBOSE_MAKEFILE OFF) set(CMAKE_CXX_COMPILER /usr/bin/clang++ CACHE INTERNAL "cxx compiler") option(BUILD_SHARED_LIBS "Build using shared libraries" OFF) include(FetchContent) set(FETCHCONTENT_QUIET FALSE) FetchContent_Declare( tpl GIT_REPOSITORY https://gitlab.com/eidheim/tiny-process-library.git GIT_TAG 8bbb5a211c5c9df8ee69301da9d22fb977b27dc1 GIT_PROGRESS TRUE ) FetchContent_MakeAvailable(tpl) FetchContent_Declare( ftxui GIT_REPOSITORY https://github.com/ArthurSonzogni/FTXUI.git GIT_TAG v6.0.0 GIT_SHALLOW TRUE GIT_PROGRESS TRUE PATCH_COMMAND git apply --check ${CMAKE_SOURCE_DIR}/cmake/patches/ftxui-empty-container.patch 2>/dev/null && git apply ${CMAKE_SOURCE_DIR}/cmake/patches/ftxui-empty-container.patch || true COMMAND git apply --check ${CMAKE_SOURCE_DIR}/cmake/patches/ftxui-window.patch 2>/dev/null && git apply ${CMAKE_SOURCE_DIR}/cmake/patches/ftxui-window.patch || true ) FetchContent_MakeAvailable(ftxui) FetchContent_Declare( sqlite_modern GIT_REPOSITORY https://github.com/SqliteModernCpp/sqlite_modern_cpp GIT_TAG 6e3009973025e0016d5573529067714201338c80 GIT_PROGRESS TRUE ) FetchContent_GetProperties(sqlite_modern) if(NOT sqlite_modern_POPULATED) FetchContent_Populate(sqlite_modern) endif() option(STATIC "Set to ON to build xlnt as a static library instead of a shared library" OFF) FetchContent_Declare( xlnt GIT_REPOSITORY https://github.com/xlnt-community/xlnt.git GIT_TAG e165887739147027e7fbab918280b88f9efa5ffb GIT_PROGRESS TRUE ) FetchContent_MakeAvailable(xlnt) # Suppress warnings in xlnt if(TARGET xlnt) target_compile_options(xlnt PRIVATE -Wno-unsafe-buffer-usage-in-libc-call -Wno-unsafe-buffer-usage -Wno-undefined-reinterpret-cast -Wno-extra-semi-stmt -Wno-sign-conversion -Wno-old-style-cast -Wno-switch-default -Wno-nrvo -Wno-reserved-identifier -Wno-unused-but-set-variable -Wno-missing-prototypes -Wno-character-conversion -Wno-implicit-int-float-conversion -Wno-float-equal -Wno-global-constructors -Wno-unique-object-duplication ) endif() set(FMT_TEST OFF CACHE BOOL "" FORCE) set(FMT_DOC OFF CACHE BOOL "" FORCE) FetchContent_Declare( fmt GIT_REPOSITORY https://github.com/fmtlib/fmt GIT_TAG 11.1.4 GIT_SHALLOW TRUE GIT_PROGRESS TRUE ) FetchContent_MakeAvailable(fmt) set(JSON_BuildTests OFF CACHE BOOL "" FORCE) set(JSON_Install OFF CACHE BOOL "" FORCE) FetchContent_Declare( json GIT_REPOSITORY https://github.com/nlohmann/json GIT_TAG v3.12.0 GIT_SHALLOW TRUE GIT_PROGRESS TRUE ) FetchContent_MakeAvailable(json) set(SPDLOG_FMT_EXTERNAL OFF CACHE BOOL "" FORCE) FetchContent_Declare( spdlog GIT_REPOSITORY https://github.com/gabime/spdlog GIT_TAG v1.15.3 GIT_SHALLOW TRUE GIT_PROGRESS TRUE ) FetchContent_MakeAvailable(spdlog) FetchContent_Declare( clipp GIT_REPOSITORY https://github.com/muellan/clipp.git GIT_TAG v1.2.3 GIT_SHALLOW TRUE GIT_PROGRESS TRUE ) FetchContent_GetProperties(clipp) if(NOT clipp_POPULATED) FetchContent_Populate(clipp) endif() project(canscope) file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.hpp ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp) add_executable(${CMAKE_PROJECT_NAME} ${SOURCES}) target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/thirdparty ${ftxui_SOURCE_DIR}/include ${tpl_SOURCE_DIR}/include ${xlnt_SOURCE_DIR}/include ${fmt_SOURCE_DIR}/include ${json_SOURCE_DIR}/include ${sqlite_modern_SOURCE_DIR}/hdr ${clipp_SOURCE_DIR}/include ) target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE ftxui::component ftxui::screen ftxui::dom tiny-process-library xlnt sqlite3 spdlog::spdlog systemd z ${Boost_LIBRARIES}) # target_link_libraries(${CMAKE_PROJECT_NAME} PUBLIC sqlite3 ${Boost_LIBRARIES})