Files
App/CMakeLists.txt
2026-06-13 13:46:53 +07:00

108 lines
2.9 KiB
CMake

cmake_minimum_required(VERSION 3.16)
project(lidar_manager_web LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
include(FetchContent)
find_package(Threads REQUIRED)
FetchContent_Declare(
cpp_httplib
GIT_REPOSITORY https://github.com/yhirose/cpp-httplib.git
GIT_TAG v0.44.0
)
FetchContent_GetProperties(cpp_httplib)
if(NOT cpp_httplib_POPULATED)
FetchContent_Populate(cpp_httplib)
endif()
FetchContent_Declare(
nlohmann_json
URL https://github.com/nlohmann/json/releases/download/v3.11.3/json.tar.xz
)
FetchContent_GetProperties(nlohmann_json)
if(NOT nlohmann_json_POPULATED)
FetchContent_Populate(nlohmann_json)
endif()
add_executable(lidar_manager_web
src/main.cpp
src/app/lidar_manager_app.cpp
src/util/file_util.cpp
src/util/string_util.cpp
src/util/id_util.cpp
src/util/http_util.cpp
src/domain/layout_schema.cpp
src/domain/layout_profile.cpp
src/storage/state_repository.cpp
src/validation/sensor_validator.cpp
src/server/static_file_server.cpp
src/server/api_server.cpp
src/mission/mission_queue.cpp
src/mission/mission_store.cpp
src/mission/mission_enqueue.cpp
src/mission/modbus_trigger_service.cpp
src/mission/mission_scheduler.cpp
src/server/api_mission_routes.cpp
)
target_link_libraries(lidar_manager_web PRIVATE Threads::Threads)
target_include_directories(lidar_manager_web PRIVATE
"${CMAKE_CURRENT_SOURCE_DIR}/src"
)
target_include_directories(lidar_manager_web SYSTEM PRIVATE
"${cpp_httplib_SOURCE_DIR}"
"${nlohmann_json_SOURCE_DIR}/single_include"
)
target_compile_definitions(lidar_manager_web PRIVATE
_DEFAULT_SOURCE
)
option(BUILD_TESTING "Build unit and integration test helpers" ON)
if(BUILD_TESTING)
enable_testing()
include(FetchContent)
FetchContent_Declare(
googletest
URL https://github.com/google/googletest/archive/refs/tags/v1.14.0.tar.gz
)
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(googletest)
set(LM_TEST_LIB_SOURCES
src/util/file_util.cpp
src/util/string_util.cpp
src/util/id_util.cpp
src/mission/mission_store.cpp
src/mission/mission_enqueue.cpp
src/validation/sensor_validator.cpp
)
add_executable(lidar_manager_tests
tests/test_mission_enqueue.cpp
tests/test_mission_store.cpp
tests/test_sensor_validator.cpp
${LM_TEST_LIB_SOURCES}
)
target_include_directories(lidar_manager_tests PRIVATE
"${CMAKE_CURRENT_SOURCE_DIR}/src"
)
target_include_directories(lidar_manager_tests SYSTEM PRIVATE
"${nlohmann_json_SOURCE_DIR}/single_include"
)
target_compile_definitions(lidar_manager_tests PRIVATE
TEST_FIXTURE_DIR="${CMAKE_CURRENT_SOURCE_DIR}/tests/fixtures/data"
)
target_link_libraries(lidar_manager_tests PRIVATE GTest::gtest_main)
include(GoogleTest)
gtest_discover_tests(lidar_manager_tests WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
add_test(NAME unit COMMAND lidar_manager_tests)
endif()