fix: CMake Test 依赖改为可选,解决无 Qt6 Test 包环境构建失败

This commit is contained in:
2026-08-08 23:58:49 +08:00
parent da271deea0
commit 34e163c6d2
+33 -26
View File
@@ -6,7 +6,10 @@ set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC 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(Dtk6 REQUIRED COMPONENTS Core)
find_package(DDEShell REQUIRED) 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) install(FILES ${QM_FILES} DESTINATION /usr/share/dde-shell/${PLUGIN_ID}/translations)
# ---- 单元测试 ---- # ---- 单元测试 ----
# 直接编译源文件到测试可执行文件,避免共享库依赖问题 # 仅当 Qt6 Test 组件存在时才构建测试目标
enable_testing() # 设计原因:Test 为可选组件,未安装 Qt6 Test 开发包的环境仍应能正常构建主插件
add_executable(tst_networkmonitorapplet if(TARGET Qt6::Test)
tests/tst_networkmonitorapplet.cpp # 直接编译源文件到测试可执行文件,避免共享库依赖问题
src/networkmonitorapplet.cpp enable_testing()
src/networkmonitorapplet.h add_executable(tst_networkmonitorapplet
) tests/tst_networkmonitorapplet.cpp
target_link_libraries(tst_networkmonitorapplet PRIVATE src/networkmonitorapplet.cpp
Qt6::Test src/networkmonitorapplet.h
Qt6::Core )
Qt6::Quick target_link_libraries(tst_networkmonitorapplet PRIVATE
Qt6::DBus Qt6::Test
Qt6::Network Qt6::Core
Dtk6::Core Qt6::Quick
Dde::Shell Qt6::DBus
) Qt6::Network
target_include_directories(tst_networkmonitorapplet PRIVATE Dtk6::Core
${CMAKE_CURRENT_SOURCE_DIR}/src Dde::Shell
/usr/include/dde-shell )
) target_include_directories(tst_networkmonitorapplet PRIVATE
target_compile_definitions(tst_networkmonitorapplet PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
PROJECT_VERSION="${PROJECT_VERSION}" /usr/include/dde-shell
TRANSLATIONS_DIR="${CMAKE_CURRENT_SOURCE_DIR}/translations" )
) target_compile_definitions(tst_networkmonitorapplet PRIVATE
add_test(NAME tst_networkmonitorapplet COMMAND tst_networkmonitorapplet) PROJECT_VERSION="${PROJECT_VERSION}"
TRANSLATIONS_DIR="${CMAKE_CURRENT_SOURCE_DIR}/translations"
)
add_test(NAME tst_networkmonitorapplet COMMAND tst_networkmonitorapplet)
endif()