cmake_minimum_required(VERSION 3.16) project(robot_bt_core LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) add_library(robot_bt_core src/core.cpp src/workflow.cpp) target_include_directories(robot_bt_core PUBLIC include) target_compile_options(robot_bt_core PRIVATE -Wall -Wextra -Werror) add_library(robot_bt_sim src/sim_driver.cpp) target_link_libraries(robot_bt_sim PUBLIC robot_bt_core) target_compile_options(robot_bt_sim PRIVATE -Wall -Wextra -Werror) add_executable(robot_bt_demo examples/demo.cpp) target_link_libraries(robot_bt_demo PRIVATE robot_bt_sim) target_compile_options(robot_bt_demo PRIVATE -Wall -Wextra -Werror) include(CTest) if(BUILD_TESTING) file(GLOB core_test_sources CONFIGURE_DEPENDS "tests/*_test.cpp") foreach(test_source IN LISTS core_test_sources) get_filename_component(test_name "${test_source}" NAME_WE) add_executable(${test_name} "${test_source}") target_link_libraries(${test_name} PRIVATE robot_bt_core) target_compile_options(${test_name} PRIVATE -Wall -Wextra -Werror -UNDEBUG) add_test(NAME ${test_name} COMMAND ${test_name}) endforeach() endif()