From 0b02a7209c2c3b2f7992722f9704212cab486f15 Mon Sep 17 00:00:00 2001 From: Jens Geudens Date: Sun, 5 Apr 2026 15:31:00 +0200 Subject: [PATCH 1/3] Refactor CMake --- CMakeLists.txt | 23 ++++++----------------- libraries/muparser/CMakeLists.txt | 2 +- src/CMakeLists.txt | 19 +++++++++++++------ tests/CMakeLists.txt | 6 ++---- 4 files changed, 22 insertions(+), 28 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7e523bb5..54d6b686 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,8 +6,6 @@ project(notonlymodbusscope VERSION 0.0.1 ) -add_definitions("-DDEBUG") - set(SCOPESOURCE ScopeSource) set(CMAKE_POSITION_INDEPENDENT_CODE ON) @@ -50,26 +48,17 @@ set(QT_LIB Qt::SerialPort ) -include_directories( - ${CMAKE_CURRENT_SOURCE_DIR}/src - ${CMAKE_CURRENT_SOURCE_DIR}/libraries -) - -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wextra") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror") +add_compile_options(-Wall -Wextra -Werror) if (MINGW) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wa,-mbig-obj") + add_compile_options(-Wa,-mbig-obj) endif() - -if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") +if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") # Code Coverage Report if(USE_GCOV) - message(STATUS "Enabling coverage") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --coverage") + message(STATUS "Enabling coverage") + add_compile_options(--coverage) + add_link_options(--coverage) endif() endif() diff --git a/libraries/muparser/CMakeLists.txt b/libraries/muparser/CMakeLists.txt index f3c8ca90..25c404d8 100644 --- a/libraries/muparser/CMakeLists.txt +++ b/libraries/muparser/CMakeLists.txt @@ -42,7 +42,7 @@ elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic") endif() -FILE(GLOB_RECURSE MUPARSER_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp") #all .cpp +FILE(GLOB_RECURSE MUPARSER_SOURCES CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp") #all .cpp add_library(muparser ${MUPARSER_SOURCES}) # Use the headers in the build-tree or the installed ones diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 067e6dd6..a5d452ed 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -18,10 +18,17 @@ execute_process( configure_file(${CMAKE_CURRENT_SOURCE_DIR}/util/version.h.in ${CMAKE_CURRENT_SOURCE_DIR}/util/version.h) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../resources/modbusscope.rc.in ${CMAKE_CURRENT_SOURCE_DIR}/../resources/modbusscope.rc) -FILE(GLOB_RECURSE SRCS "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/*.h") #all .cpp/.h in current "src" folder and sub folders -FILE(GLOB_RECURSE UIS "${CMAKE_CURRENT_SOURCE_DIR}/*.ui") #all .ui in current "src" folder and sub folders +file(GLOB_RECURSE SRCS CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/*.h") #all .cpp/.h in current "src" folder and sub folders +file(GLOB_RECURSE UIS CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/*.ui") #all .ui in current "src" folder and sub folders -qt_add_library (${SCOPESOURCE} STATIC ${SRCS} ${UIS}) +qt_add_library(${SCOPESOURCE} STATIC ${SRCS} ${UIS}) + +target_compile_definitions(${SCOPESOURCE} PRIVATE DEBUG) + +target_include_directories(${SCOPESOURCE} PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/../libraries +) # Default GUI type is blank set(GUI_TYPE "") @@ -29,7 +36,7 @@ set(GUI_TYPE "") if(WIN32) set(GUI_TYPE WIN32) set(target_dir "bin/win") -elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") +elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") set(target_dir "bin/linux") else() message(SEND_ERROR "You are on an unsupported platform! (Not Win or Unix)") @@ -62,10 +69,10 @@ add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD ) # Do platform specific post target stuff -if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") +if(CMAKE_SYSTEM_NAME STREQUAL "Linux") install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin) elseif(WIN32) # not required -endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux") +endif (CMAKE_SYSTEM_NAME STREQUAL "Linux") diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index f050089a..1d1142a5 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,5 +1,3 @@ -add_definitions(-DGTEST_LANGUAGE_CXX11) - find_package(Threads REQUIRED) if ($ENV{GOOGLETEST_DIR}) @@ -16,8 +14,6 @@ else () message( FATAL_ERROR "No googletest src dir found - set GOOGLETEST_DIR to enable!") endif () -include_directories(${GTestSrc} ${GTestSrc}/include ${GMockSrc} ${GMockSrc}/include) - set( GOOGLE_TEST_SOURCE ${GTestSrc}/src/gtest-all.cc @@ -43,6 +39,8 @@ function(add_xtest_mock SOURCE_NAME) ${SOURCE_NAME}.cpp ${GOOGLE_TEST_SOURCE} ${ARGN}) + target_include_directories(${SOURCE_NAME} PRIVATE ${GTestSrc} ${GTestSrc}/include ${GMockSrc} ${GMockSrc}/include) + target_compile_definitions(${SOURCE_NAME} PRIVATE GTEST_LANGUAGE_CXX11) target_link_libraries(${SOURCE_NAME} Qt::Test Threads::Threads ${QT_LIB} ${SCOPESOURCE}) add_test(NAME ${SOURCE_NAME} COMMAND ${SOURCE_NAME}) endfunction() From 969a5fb8a139427450d8f0b52771253540e8a0cd Mon Sep 17 00:00:00 2001 From: Jens Geudens Date: Sun, 5 Apr 2026 15:49:15 +0200 Subject: [PATCH 2/3] Add Release conf --- CMakeLists.txt | 7 +++++++ scripts/build_linux.sh | 2 +- scripts/build_windows.bat | 2 +- scripts/run_clang_tidy.sh | 1 + scripts/run_clazy.sh | 1 + src/CMakeLists.txt | 4 +++- 6 files changed, 14 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 54d6b686..755c4455 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,6 +8,13 @@ project(notonlymodbusscope set(SCOPESOURCE ScopeSource) +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Build type" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "RelWithDebInfo" "MinSizeRel") +endif() + +message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") + set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(CMAKE_CXX_STANDARD 20) diff --git a/scripts/build_linux.sh b/scripts/build_linux.sh index 00b55162..34d07c7a 100644 --- a/scripts/build_linux.sh +++ b/scripts/build_linux.sh @@ -4,7 +4,7 @@ set -ex mkdir -p release cd release -cmake -GNinja .. +cmake -GNinja -DCMAKE_BUILD_TYPE=Release .. ninja ctest --output-on-failure \ No newline at end of file diff --git a/scripts/build_windows.bat b/scripts/build_windows.bat index 960ceb4c..1621c3ec 100644 --- a/scripts/build_windows.bat +++ b/scripts/build_windows.bat @@ -8,7 +8,7 @@ echo %PATH% g++ -v -cmake -G "Ninja" .. +cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Release .. IF ERRORLEVEL 1 GOTO errorHandling ninja diff --git a/scripts/run_clang_tidy.sh b/scripts/run_clang_tidy.sh index 3ec738dc..ac57924e 100755 --- a/scripts/run_clang_tidy.sh +++ b/scripts/run_clang_tidy.sh @@ -7,6 +7,7 @@ SINGLE_FILE="${1:-}" echo "=== Configuring (compile_commands.json) ===" cmake -GNinja \ + -DCMAKE_BUILD_TYPE=Debug \ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ -DCMAKE_PREFIX_PATH="${QT_PREFIX}" \ -B "${BUILD_DIR}" diff --git a/scripts/run_clazy.sh b/scripts/run_clazy.sh index 8b106aa7..991c09c6 100755 --- a/scripts/run_clazy.sh +++ b/scripts/run_clazy.sh @@ -7,6 +7,7 @@ SINGLE_FILE="${1:-}" echo "=== Configuring (compile_commands.json) ===" cmake -GNinja \ + -DCMAKE_BUILD_TYPE=Debug \ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ -DCMAKE_PREFIX_PATH="${QT_PREFIX}" \ -B "${BUILD_DIR}" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a5d452ed..9a68518b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -23,7 +23,9 @@ file(GLOB_RECURSE UIS CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/*.ui") #all qt_add_library(${SCOPESOURCE} STATIC ${SRCS} ${UIS}) -target_compile_definitions(${SCOPESOURCE} PRIVATE DEBUG) +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + target_compile_definitions(${SCOPESOURCE} PRIVATE DEBUG) +endif() target_include_directories(${SCOPESOURCE} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} From 065eecfdb12034cbec0af24470513cf480ebeca5 Mon Sep 17 00:00:00 2001 From: Jens Geudens Date: Sun, 5 Apr 2026 17:08:46 +0200 Subject: [PATCH 3/3] Fix cmake --- src/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9a68518b..eff8bbe3 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -29,6 +29,9 @@ endif() target_include_directories(${SCOPESOURCE} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} +) + +target_include_directories(${SCOPESOURCE} SYSTEM PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../libraries )