fix: version()元数据为空时回退到编译时版本号

CMakeLists.txt 新增 target_compile_definitions 将 project(VERSION)
暴露为 PROJECT_VERSION 宏。version() 在 pluginMetaData 返回空时
回退到该宏,避免 AboutWindow 版本行显示空白。
This commit is contained in:
2026-07-24 10:07:37 +08:00
parent 4b5cde4361
commit 36200e7c50
3 changed files with 11 additions and 3 deletions
+3
View File
@@ -20,6 +20,9 @@ add_library(space.jokul.JNetApplet SHARED
set_target_properties(space.jokul.JNetApplet PROPERTIES PREFIX "") set_target_properties(space.jokul.JNetApplet PROPERTIES PREFIX "")
# 将 project(VERSION) 暴露为编译宏,供 C++ version() 兜底使用
target_compile_definitions(space.jokul.JNetApplet PRIVATE PROJECT_VERSION="${PROJECT_VERSION}")
# 头文件搜索路径指向 src/,使 #include "networkmonitorapplet.h" 可被外部解析 # 头文件搜索路径指向 src/,使 #include "networkmonitorapplet.h" 可被外部解析
target_include_directories(space.jokul.JNetApplet PRIVATE target_include_directories(space.jokul.JNetApplet PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}/src
+3 -2
View File
@@ -47,8 +47,9 @@
~~所有文件头 `SPDX-FileCopyrightText: 2024 MyCompany`"MyCompany" 是模板占位符。~~ ~~所有文件头 `SPDX-FileCopyrightText: 2024 MyCompany`"MyCompany" 是模板占位符。~~
已将 8 个源文件的版权头改为 `SPDX-FileCopyrightText: 2026 Jokul` 已将 8 个源文件的版权头改为 `SPDX-FileCopyrightText: 2026 Jokul`
**10. `version()` 无兜底** **10. ~~`version()` 无兜底~~ ✅ 已修复**
`pluginMetaData().value("Version")` 返回空(元数据未加载),AboutWindow 版本行显示空白。networkview.qml 有 `"1.0"` 兜底,但 AboutWindow 的 `version` 属性直接来自 `applet.version`,无兜底。 ~~若 `pluginMetaData().value("Version")` 返回空(元数据未加载),AboutWindow 版本行显示空白。~~
已在 `version()` 中加兜底:元数据返回空时回退到编译时版本号 `PROJECT_VERSION` 宏。CMakeLists.txt 新增 `target_compile_definitions``project(VERSION)` 暴露为编译宏。
--- ---
+5 -1
View File
@@ -150,7 +150,11 @@ QString NetworkMonitorApplet::version() const
// DPluginMetaData::value() 已在 "Plugin" 层级内部查找(源码:frame/pluginmetadata.cpp // DPluginMetaData::value() 已在 "Plugin" 层级内部查找(源码:frame/pluginmetadata.cpp
// metadata.json 的 { "Plugin": { "Version": "x.y.z" } } 被 DPluginMetaData 加载后, // metadata.json 的 { "Plugin": { "Version": "x.y.z" } } 被 DPluginMetaData 加载后,
// value("Version") 直接返回版本号,无需再 .value("Plugin").toMap() 展开 // value("Version") 直接返回版本号,无需再 .value("Plugin").toMap() 展开
return pluginMetaData().value("Version").toString(); const QString ver = pluginMetaData().value("Version").toString();
// 兜底:元数据未加载或无 Version 字段时回退到编译时版本号
// 设计原因:QML 各处 version 属性兜底不一致(networkview.qml 有 "1.0"AboutWindow 无),
// 统一在后端兜底,避免 AboutWindow 版本行显示空白
return ver.isEmpty() ? QStringLiteral(PROJECT_VERSION) : ver;
} }
// 返回任务栏网速字体颜色,空串表示跟随系统主题 // 返回任务栏网速字体颜色,空串表示跟随系统主题