版本号 V1.1.1
是遵循 语义化版本控制(Semantic Versioning,简称 SemVer) 的版本命名方式,通常由三部分组成:主版本号.次版本号.修订号
(MAJOR.MINOR.PATCH
),具体含义如下:
版本号 V1.1.1
的组成
部分 | 名称 | 含义 | 示例变化逻辑 |
---|---|---|---|
V1 | 主版本号 | 重大功能更新或破坏性变更(如架构重构、不兼容的 API 修改) | V1 → V2 |
.1 | 次版本号 | 向后兼容的功能新增(如新增功能,但旧接口仍可用) | V1.1 → V1.2 |
.1 | 修订号 | 向后兼容的问题修正(如 Bug 修复、优化,不影响功能接口) | V1.1.1 → V1.1.2 |
具体场景解释
-
V1.1.0
→V1.1.1
- 表示修复了一个 Bug(例如:修复了某个功能按钮的图标显示问题)。
- 无新功能添加,仅优化或修复问题。
-
V1.0.0
→V1.1.0
- 表示新增了一个或多个功能(例如:新增了“废料刀工艺线”模块)。
- 所有修改均兼容旧版本,用户无需担心升级后原有功能失效。
-
V1.0.0
→V2.0.0
- 表示发生了重大变更(例如:重构了核心架构,删除了过时 API)。
- 可能需要用户调整代码或配置才能兼容新版本。
为什么用这种命名方式?
- 清晰传达变更影响:用户通过版本号即可判断升级风险。
- 标准化依赖管理:开发工具(如 npm、pip)可自动判断版本兼容性。
- 协作友好:团队能明确版本迭代的意图。
您的 XML 文件中的版本号
在您的 XML 中,当前版本为 V1.0.0
,如果未来更新:
- 新增功能(如添加“翻边结构”模块)→ 升级为
V1.1.0
- 修复现有功能 Bug → 升级为
V1.0.1
- 重构数据格式或删除旧字段 → 升级为
V2.0.0
C++ 项目常见版本标识
标识后缀 | 阶段 | C++ 项目中的特殊含义 | 示例 | 典型使用场景 |
---|---|---|---|---|
-dev | 开发中 | 代码处于活跃开发状态,可能每日构建(类似 -SNAPSHOT ) | v1.2.0-dev | CMake 项目、头文件库 |
-alpha | 内部测试 | 早期功能验证,API 可能频繁变动 | v1.2.0-alpha | 库的预览版发布 |
-beta | 公开测试 | API 基本稳定,重点修复功能缺陷 | v1.2.0-beta.2 | 开源社区测试反馈 |
-rc | 发布候选 | 功能冻结,仅修复关键 Bug | v1.2.0-rc3 | 最终稳定性验证 |
(无后缀) | 正式版 (Release) | 稳定版本,推荐生产环境使用 | v1.2.0 | 官方发布包、包管理器(如 vcpkg) |
-patch | 紧急补丁 | 正式版后的热修复(Hotfix) | v1.2.1-patch | 安全漏洞修复 |
-LTS | 长期支持版 | 长期维护分支(如 Qt、Boost 等大型库) | v2.0.0-LTS | 企业级应用依赖 |
-msvc / -gcc | 编译器优化版 | 针对特定编译器优化的构建(常见于性能敏感库) | v1.2.0-msvc2022 | 发布多编译器二进制包 |
C++ 项目中的特殊实践
-
头文件库的版本控制
- 纯头文件库(如 Catch2、nlohmann/json)可能直接通过 Git Tag 标记版本(如
v3.2.1
),较少使用后缀。 - 开发中版本可能通过分支(如
dev
)或-next
后缀区分。
- 纯头文件库(如 Catch2、nlohmann/json)可能直接通过 Git Tag 标记版本(如
-
包管理器兼容性
- vcpkg:支持语义化版本(如
fmt 8.1.1
),预发布版本需显式指定。 - Conan:允许自定义版本标签(如
zlib/1.2.11@user/channel
)。
- vcpkg:支持语义化版本(如
-
ABI 兼容性标识
C++ 项目可能额外标注 ABI 版本(如libstdc++
的GLIBCXX_3.4.29
),与软件版本号分离。
建议在正式发布时使用纯净的 VX.Y.Z
格式,避免后缀混淆。
何曾参静谧的博客(✅关注、👍点赞、⭐收藏、🎠转发)