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