cmake_minimum_required(VERSION 3.16) project(line_laser_modbus_cpp VERSION 1.0.0 LANGUAGES CXX) option(LINE_LASER_BUILD_TESTS "Build unit tests" ON) option(LINE_LASER_BUILD_APPS "Build host/device demo applications" ON) if(MSVC) add_compile_options(/utf-8) endif() add_library(line_laser_modbus src/protocol.cpp src/host.cpp src/device.cpp src/motion_adapter.cpp) target_include_directories(line_laser_modbus PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) target_compile_features(line_laser_modbus PUBLIC cxx_std_17) if(MSVC) target_compile_options(line_laser_modbus PRIVATE /W4 /permissive- /utf-8) else() target_compile_options(line_laser_modbus PRIVATE -Wall -Wextra -Wpedantic) endif() if(LINE_LASER_BUILD_APPS) add_executable(host_demo apps/host_demo.cpp) target_link_libraries(host_demo PRIVATE line_laser_modbus) add_executable(device_demo apps/device_demo.cpp) target_link_libraries(device_demo PRIVATE line_laser_modbus) add_executable(adapter_demo apps/adapter_demo.cpp) target_link_libraries(adapter_demo PRIVATE line_laser_modbus) endif() if(LINE_LASER_BUILD_TESTS) enable_testing() add_executable(protocol_tests tests/protocol_tests.cpp) target_link_libraries(protocol_tests PRIVATE line_laser_modbus) add_test(NAME protocol_tests COMMAND protocol_tests) add_executable(host_tests tests/host_tests.cpp) target_link_libraries(host_tests PRIVATE line_laser_modbus) add_test(NAME host_tests COMMAND host_tests) add_executable(device_tests tests/device_tests.cpp) target_link_libraries(device_tests PRIVATE line_laser_modbus) add_test(NAME device_tests COMMAND device_tests) add_executable(adapter_tests tests/adapter_tests.cpp) target_link_libraries(adapter_tests PRIVATE line_laser_modbus) add_test(NAME adapter_tests COMMAND adapter_tests) endif()