diff --git a/.vscode/settings.json b/.vscode/settings.json index ceee502..33b70cc 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,14 +1,20 @@ { "cmake.configureOnOpen": true, + "cmake.configureArgs": [ + "-DBUILD_TESTS=ON", + "-DBUILD_EXAMPLES=ON" + ], "cmake.copyCompileCommands": "${workspaceFolder}/compile_commands.json", "C_Cpp.intelliSenseEngine": "disabled", "clangd.path": "clangd", "editor.formatOnSave": true, - "editor.rulers": [120], + "editor.rulers": [ + 120 + ], "[c]": { "editor.defaultFormatter": "llvm-vs-code-extensions.vscode-clangd" }, "[cpp]": { "editor.defaultFormatter": "llvm-vs-code-extensions.vscode-clangd" }, -} +} \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index c0bd632..0055c61 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,20 +11,39 @@ include_directories(tests examples/linux .) # Define BUILD_SHARED_LIBS=ON to build a dynamic library instead add_library(nanomodbus nanomodbus.c) -add_executable(nanomodbus_tests nanomodbus.c tests/nanomodbus_tests.c) -target_link_libraries(nanomodbus_tests pthread) +if(BUILD_EXAMPLES) + add_executable(client-tcp examples/linux/client-tcp.c) + target_link_libraries(client-tcp nanomodbus) + add_executable(server-tcp examples/linux/server-tcp.c) + target_link_libraries(server-tcp nanomodbus) +endif() -add_executable(server_disabled nanomodbus.c tests/server_disabled.c) -target_compile_definitions(server_disabled PUBLIC NMBS_SERVER_DISABLED) +if(BUILD_TESTS) + include(FetchContent) -add_executable(client_disabled nanomodbus.c tests/client_disabled.c) -target_compile_definitions(client_disabled PUBLIC NMBS_CLIENT_DISABLED) + FetchContent_Declare( + criterion + GIT_REPOSITORY https://github.com/Snaipe/Criterion.git + GIT_TAG v2.4.1 + ) + FetchContent_MakeAvailable(criterion) + + add_executable(nanomodbus_tests nanomodbus.c tests/nanomodbus_tests.c) + target_link_libraries(nanomodbus_tests pthread) -add_executable(multi_server_rtu nanomodbus.c tests/multi_server_rtu.c) -target_compile_definitions(multi_server_rtu PUBLIC NMBS_DEBUG) -target_link_libraries(multi_server_rtu pthread) + add_executable(server_disabled nanomodbus.c tests/server_disabled.c) + target_compile_definitions(server_disabled PUBLIC NMBS_SERVER_DISABLED) -add_custom_target(tests DEPENDS nanomodbus_tests server_disabled client_disabled multi_server_rtu) + add_executable(client_disabled nanomodbus.c tests/client_disabled.c) + target_compile_definitions(client_disabled PUBLIC NMBS_CLIENT_DISABLED) -add_executable(client-tcp nanomodbus.c examples/linux/client-tcp.c) -add_executable(server-tcp nanomodbus.c examples/linux/server-tcp.c) + add_executable(multi_server_rtu nanomodbus.c tests/multi_server_rtu.c) + target_compile_definitions(multi_server_rtu PUBLIC NMBS_DEBUG) + target_link_libraries(multi_server_rtu pthread) + + enable_testing() + add_test(NAME test_general COMMAND $) + add_test(NAME test_server_disabled COMMAND $) + add_test(NAME test_client_disabled COMMAND $) + add_test(NAME test_multi_server_rtu COMMAND $) +endif() \ No newline at end of file