cmake_minimum_required(VERSION 3.16) project(tux-dock LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) include(FetchContent) set(FTXUI_BUILD_DOCS OFF CACHE BOOL "" FORCE) set(FTXUI_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) set(FTXUI_BUILD_TESTS OFF CACHE BOOL "" FORCE) FetchContent_Declare( ftxui GIT_REPOSITORY https://github.com/ArthurSonzogni/FTXUI.git GIT_TAG v5.0.0 ) FetchContent_MakeAvailable(ftxui) include(FetchContent) FetchContent_Declare( json URL https://github.com/nlohmann/json/releases/download/v3.11.3/json.tar.xz DOWNLOAD_EXTRACT_TIMESTAMP TRUE ) FetchContent_MakeAvailable(json) add_executable(tux-dock main.cpp src/process_runner.cpp src/docker_engine_client.cpp src/http_response_parser.cpp src/container_parser.cpp src/operation_state.cpp src/stop_waiter.cpp src/docker_manager.cpp ) target_link_libraries(tux-dock PRIVATE ftxui::screen ftxui::dom ftxui::component nlohmann_json::nlohmann_json ) target_compile_options(tux-dock PRIVATE -Wall -Wextra -Wpedantic) include(CTest) if(BUILD_TESTING) add_executable(tux-dock-http-tests tests/test_http_response_parser.cpp src/http_response_parser.cpp ) target_include_directories(tux-dock-http-tests PRIVATE src) target_compile_options(tux-dock-http-tests PRIVATE -Wall -Wextra -Wpedantic) add_test(NAME tux-dock-http-tests COMMAND tux-dock-http-tests) add_executable(tux-dock-container-tests tests/test_container_parser.cpp src/container_parser.cpp ) target_include_directories(tux-dock-container-tests PRIVATE src) target_link_libraries(tux-dock-container-tests PRIVATE nlohmann_json::nlohmann_json) target_compile_options(tux-dock-container-tests PRIVATE -Wall -Wextra -Wpedantic) add_test(NAME tux-dock-container-tests COMMAND tux-dock-container-tests) add_executable(tux-dock-operation-tests tests/test_operation_state.cpp src/operation_state.cpp ) target_include_directories(tux-dock-operation-tests PRIVATE src) target_compile_options(tux-dock-operation-tests PRIVATE -Wall -Wextra -Wpedantic) add_test(NAME tux-dock-operation-tests COMMAND tux-dock-operation-tests) add_executable(tux-dock-stop-tests tests/test_stop_waiter.cpp src/stop_waiter.cpp ) target_include_directories(tux-dock-stop-tests PRIVATE src) target_compile_options(tux-dock-stop-tests PRIVATE -Wall -Wextra -Wpedantic) add_test(NAME tux-dock-stop-tests COMMAND tux-dock-stop-tests) add_executable(tux-dock-stop-sequence-tests tests/test_stop_sequence.cpp src/stop_waiter.cpp ) target_include_directories(tux-dock-stop-sequence-tests PRIVATE src) target_compile_options(tux-dock-stop-sequence-tests PRIVATE -Wall -Wextra -Wpedantic) add_test(NAME tux-dock-stop-sequence-tests COMMAND tux-dock-stop-sequence-tests) add_test(NAME tux-dock-docker-integration-tests COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_docker_integration.sh) endif()