cmake_minimum_required(VERSION 3.16) project(bfebbx CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) add_compile_options(-Wall -Wextra) enable_testing() # --- library sources (grows as tasks are added) --- add_library(bfebbx_lib src/naming.cpp src/betaflight.cpp src/mounts.cpp src/serial.cpp src/eject.cpp src/cli.cpp ) target_include_directories(bfebbx_lib PUBLIC src) # --- platform-specific linking --- if(APPLE) target_link_libraries(bfebbx_lib PUBLIC "-framework DiskArbitration" "-framework CoreFoundation") endif() # --- tests --- add_executable(test_naming tests/test_naming.cpp) target_link_libraries(test_naming PRIVATE bfebbx_lib) add_test(NAME naming COMMAND test_naming) add_executable(test_betaflight_parse tests/test_betaflight_parse.cpp) target_link_libraries(test_betaflight_parse PRIVATE bfebbx_lib) add_test(NAME betaflight_parse COMMAND test_betaflight_parse) add_executable(test_mounts tests/test_mounts.cpp) target_link_libraries(test_mounts PRIVATE bfebbx_lib) add_test(NAME mounts COMMAND test_mounts) add_executable(test_serial tests/test_serial.cpp) target_link_libraries(test_serial PRIVATE bfebbx_lib) if(CMAKE_SYSTEM_NAME STREQUAL "Linux") target_link_libraries(test_serial PRIVATE util) # openpty endif() add_test(NAME serial COMMAND test_serial) add_executable(test_betaflight_proto tests/test_betaflight_proto.cpp) target_link_libraries(test_betaflight_proto PRIVATE bfebbx_lib) if(CMAKE_SYSTEM_NAME STREQUAL "Linux") target_link_libraries(test_betaflight_proto PRIVATE util) endif() add_test(NAME betaflight_proto COMMAND test_betaflight_proto) # --- main executable --- add_executable(bfebbx src/main.cpp) target_link_libraries(bfebbx PRIVATE bfebbx_lib) add_executable(test_cli tests/test_cli.cpp) target_link_libraries(test_cli PRIVATE bfebbx_lib) add_test(NAME cli COMMAND test_cli)