Files
JNetApplet/CMakeLists.txt
T
Jokul 73e5487d71 chore: 版本号升至 1.2.0
1.1.0 -> 1.2.0 变更清单:

新增功能:
- 国际化支持(英文源串+中文翻译,按系统语言自动加载)
- C++ 后端单元测试(5个测试用例)
- 全接口速度历史采样(切换网卡趋势图立即有数据)

缺陷修复:
- 速度计算按真实时间间隔而非假定1秒
- 计数器回绕时负速度钳制为0
- 总量统计改为累加会话增量,切换网卡不再跳变
- 独立窗口及任务栏图标适配深色模式
- detectInterfaces过滤规则统一,消除UI闪烁
- setActiveInterface校验接口有效性
- 窗口居中适配多显示器
- version()元数据为空时回退到编译时版本号
- SPDX版权头改为2026 Jokul

重构:
- 抽取NetCommon.qml消除跨组件重复代码
- 删除interfaceStats死代码
- 移除refresh()的Q_INVOKABLE标记

文档:
- 更新README和AGENTS.md
- 新增需求报告
2026-07-24 19:16:39 +08:00

95 lines
3.5 KiB
CMake
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
cmake_minimum_required(VERSION 3.16)
project(JNetApplet VERSION 1.2.0 LANGUAGES CXX)
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(Dtk6 REQUIRED COMPONENTS Core)
find_package(DDEShell REQUIRED)
# 插件 ID
set(PLUGIN_ID "space.jokul.JNetApplet")
add_library(space.jokul.JNetApplet SHARED
src/networkmonitorapplet.h
src/networkmonitorapplet.cpp
)
set_target_properties(space.jokul.JNetApplet PROPERTIES PREFIX "")
# 将 project(VERSION) 暴露为编译宏,供 C++ version() 兜底使用
target_compile_definitions(space.jokul.JNetApplet PRIVATE PROJECT_VERSION="${PROJECT_VERSION}")
# 翻译文件:编译 .ts -> .qm,安装到插件目录的 translations/ 子目录
# 设计原因:QML 中 qsTr() 源串为英文,中文翻译通过 .qm 文件在运行时加载
set(TS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/translations/jnetapplet_zh_CN.ts)
qt_add_translation(QM_FILES ${TS_FILES})
# 翻译文件安装路径,暴露为编译宏供 C++ 加载
target_compile_definitions(space.jokul.JNetApplet PRIVATE
TRANSLATIONS_DIR="/usr/share/dde-shell/${PLUGIN_ID}/translations"
)
# 确保 .qm 在构建时生成(qt_add_translation 默认仅 install 时触发)
add_custom_target(translations ALL DEPENDS ${QM_FILES})
# 头文件搜索路径指向 src/,使 #include "networkmonitorapplet.h" 可被外部解析
target_include_directories(space.jokul.JNetApplet PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src
/usr/include/dde-shell
)
target_link_libraries(space.jokul.JNetApplet PRIVATE
Qt6::Core
Qt6::Quick
Qt6::DBus
Qt6::Network
Dtk6::Core
Dde::Shell
)
# 安装到dde-shell插件目录
install(TARGETS space.jokul.JNetApplet DESTINATION /usr/lib/x86_64-linux-gnu/dde-shell)
# 由模板生成 metadata.json,版本号从 project() 取,避免多处手动维护
# 设计原因:版本号唯一源为 CMakeLists.txt 顶部的 project(... VERSION)
# configure_file 在构建目录生成最终 metadata.jsoninstall 安装生成文件
configure_file(package/metadata.json.in ${CMAKE_CURRENT_BINARY_DIR}/metadata.json @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/metadata.json DESTINATION /usr/share/dde-shell/${PLUGIN_ID})
install(FILES package/networkview.qml DESTINATION /usr/share/dde-shell/${PLUGIN_ID})
# 安装 components 子目录下所有 QML 组件
# 设计原因:拆分出的子组件需随主 QML 一起安装到 dde-shell 插件目录,
# 否则 networkview.qml 的 import "components" 在运行时找不到类型
install(DIRECTORY package/components DESTINATION /usr/share/dde-shell/${PLUGIN_ID})
# 安装编译后的翻译文件
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)