cmake_minimum_required(VERSION 3.14) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) project(essim LANGUAGES CXX VERSION 0.1 DESCRIPTION "System digital twin." ) include(FetchContent) set(FTXUI_BUILD_DOCS OFF CACHE INTERNAL "") set(FTXUI_BUILD_EXAMPLES OFF CACHE INTERNAL "") set(FTXUI_BUILD_TESTS OFF CACHE INTERNAL "") set(FTXUI_ENABLE_INSTALL OFF CACHE INTERNAL "") FetchContent_Declare(ftxui GIT_REPOSITORY https://github.com/ArthurSonzogni/FTXUI.git GIT_TAG v6.1.9 GIT_SHALLOW TRUE ) FetchContent_MakeAvailable(ftxui) find_package(libzip REQUIRED) find_package(pugixml REQUIRED) # Library target = everything except main.cpp; reused by `essim` and `essim_tests`. file(GLOB_RECURSE LIB_SOURCES "src/*.cpp") list(REMOVE_ITEM LIB_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp") add_library(essim_lib STATIC ${LIB_SOURCES}) target_include_directories(essim_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src) target_link_libraries(essim_lib PUBLIC ftxui::screen ftxui::dom ftxui::component libzip::zip pugixml::pugixml ) add_executable(essim src/main.cpp) target_link_libraries(essim PRIVATE essim_lib) # Tests include(CTest) if(BUILD_TESTING) set(CMAKE_POLICY_VERSION_MINIMUM 3.5) FetchContent_Declare(doctest GIT_REPOSITORY https://github.com/doctest/doctest.git GIT_TAG v2.4.11 GIT_SHALLOW TRUE ) FetchContent_MakeAvailable(doctest) unset(CMAKE_POLICY_VERSION_MINIMUM) file(GLOB TEST_SOURCES "tests/*.cpp") if(TEST_SOURCES) add_executable(essim_tests ${TEST_SOURCES}) target_link_libraries(essim_tests PRIVATE essim_lib doctest::doctest) add_test(NAME essim_tests COMMAND essim_tests) endif() endif()