You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过find_package设置MAJOR.MINOR.PATCH/TWEAK格式的版本变量?

使用CMake指定多分量版本并获取版本变量

CMake官方文档版本选择部分(中文翻译)

当用find_package指定版本时,CMake支持完整的MAJOR.MINOR.PATCH.TWEAK语义化版本格式。版本字符串可以包含这四个分量,CMake会按规则匹配对应包版本:

  • 加EXACT选项时,会严格匹配指定的完整版本,包括所有分量;
  • 不加EXACT时,会匹配不低于指定版本的兼容版本(兼容规则由包的配置文件定义)。

成功找到符合要求的包后,CMake会自动生成一系列版本相关变量,对应版本的各个分量。


具体实现方法

1. 修改find_package的版本指定

直接把版本写成MAJOR.MINOR.PATCH.TWEAK格式,结合需求加EXACT:

# 严格匹配2.3.4.1版本
find_package(pack 2.3.4.1 REQUIRED EXACT)

# 或者匹配不低于2.3.4.1的兼容版本
# find_package(pack 2.3.4.1 REQUIRED)

2. 直接使用自动生成的版本变量

find_package成功后,CMake会自动创建以下变量,直接在后续代码中使用即可:

  • pack_VERSION:完整版本字符串(比如2.3.4.1)
  • pack_VERSION_MAJOR:主版本号(比如2)
  • pack_VERSION_MINOR:次版本号(比如3)
  • pack_VERSION_PATCH:补丁版本号(比如4)
  • pack_VERSION_TWEAK:微调版本号(比如1)

可以加个输出验证变量是否正确生成:

message(STATUS "当前找到的pack版本:${pack_VERSION}")
message(STATUS "主版本:${pack_VERSION_MAJOR}")
message(STATUS "次版本:${pack_VERSION_MINOR}")
message(STATUS "补丁版本:${pack_VERSION_PATCH}")
message(STATUS "微调版本:${pack_VERSION_TWEAK}")

3. 注意事项

  • 要确保你的pack包提供了正确的版本配置文件(一般是packConfigVersion.cmake),否则CMake无法正确识别和拆分版本分量;
  • 如果包的版本格式没有TWEAK分量,pack_VERSION_TWEAK变量会被设置为空值。

内容的提问来源于stack exchange,提问作者Nishikant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 21:22:34