From 34e163c6d25fc8a9bd49b9134b80b4bb4187f91e Mon Sep 17 00:00:00 2001 From: Jokul Date: Sat, 8 Aug 2026 23:58:49 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20CMake=20Test=20=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E5=8F=AF=E9=80=89=EF=BC=8C=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E6=97=A0=20Qt6=20Test=20=E5=8C=85=E7=8E=AF=E5=A2=83=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 59 ++++++++++++++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 26 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 969584c..1a405be 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,10 @@ set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) -find_package(Qt6 REQUIRED COMPONENTS Core Quick DBus Network LinguistTools Test) +find_package(Qt6 REQUIRED COMPONENTS Core Quick DBus Network LinguistTools) +# Test 仅用于单元测试目标,非主插件依赖;将其设为可选, +# 避免未安装 Qt6 Test 开发包的环境构建主插件时失败 +find_package(Qt6 OPTIONAL_COMPONENTS Test) find_package(Dtk6 REQUIRED COMPONENTS Core) find_package(DDEShell REQUIRED) @@ -68,28 +71,32 @@ install(DIRECTORY package/components DESTINATION /usr/share/dde-shell/${PLUGIN_I install(FILES ${QM_FILES} DESTINATION /usr/share/dde-shell/${PLUGIN_ID}/translations) # ---- 单元测试 ---- -# 直接编译源文件到测试可执行文件,避免共享库依赖问题 -enable_testing() -add_executable(tst_networkmonitorapplet - tests/tst_networkmonitorapplet.cpp - src/networkmonitorapplet.cpp - src/networkmonitorapplet.h -) -target_link_libraries(tst_networkmonitorapplet PRIVATE - Qt6::Test - Qt6::Core - Qt6::Quick - Qt6::DBus - Qt6::Network - Dtk6::Core - Dde::Shell -) -target_include_directories(tst_networkmonitorapplet PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/src - /usr/include/dde-shell -) -target_compile_definitions(tst_networkmonitorapplet PRIVATE - PROJECT_VERSION="${PROJECT_VERSION}" - TRANSLATIONS_DIR="${CMAKE_CURRENT_SOURCE_DIR}/translations" -) -add_test(NAME tst_networkmonitorapplet COMMAND tst_networkmonitorapplet) \ No newline at end of file +# 仅当 Qt6 Test 组件存在时才构建测试目标 +# 设计原因:Test 为可选组件,未安装 Qt6 Test 开发包的环境仍应能正常构建主插件 +if(TARGET Qt6::Test) + # 直接编译源文件到测试可执行文件,避免共享库依赖问题 + enable_testing() + add_executable(tst_networkmonitorapplet + tests/tst_networkmonitorapplet.cpp + src/networkmonitorapplet.cpp + src/networkmonitorapplet.h + ) + target_link_libraries(tst_networkmonitorapplet PRIVATE + Qt6::Test + Qt6::Core + Qt6::Quick + Qt6::DBus + Qt6::Network + Dtk6::Core + Dde::Shell + ) + target_include_directories(tst_networkmonitorapplet PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/src + /usr/include/dde-shell + ) + target_compile_definitions(tst_networkmonitorapplet PRIVATE + PROJECT_VERSION="${PROJECT_VERSION}" + TRANSLATIONS_DIR="${CMAKE_CURRENT_SOURCE_DIR}/translations" + ) + add_test(NAME tst_networkmonitorapplet COMMAND tst_networkmonitorapplet) +endif() \ No newline at end of file