You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

首次使用Hunter包管理器编译报错:Unexpected empty string问题排查

Hunter包管理器编译错误:Unexpected empty string 原因及解决方法

错误原因

该错误核心是Hunter执行hunter_get_package_sha1.cmake时,发现目标包(libp2p)的版本变量${x_VERSION}为空。这说明你的CMake配置中没有为libp2p指定有效的、Hunter可识别的版本号——Hunter要求所有引入的包必须明确指定版本,否则无法定位对应的包资源,触发断言检查失败。

解决方法

  • 明确指定libp2p版本
    在CMakeLists.txt中,确保引入libp2p时附带正确版本号,两种常见配置方式:

    1. 直接在find_package中指定版本:
      hunter_add_package(libp2p)
      find_package(libp2p REQUIRED CONFIG VERSION 0.1.0)
      
      注意替换0.1.0为Hunter仓库中实际存在的libp2p版本。
    2. 通过hunter_config提前配置版本:
      HunterGate(
          URL "https://github.com/cpp-pm/hunter/archive/v0.24.19.tar.gz"
          SHA1 "你的Hunter包SHA1值"
      )
      
      project(YourProjectName)
      
      hunter_config(libp2p VERSION 0.1.0)
      hunter_add_package(libp2p)
      find_package(libp2p REQUIRED CONFIG)
      
  • 验证版本有效性
    确认你指定的版本是Hunter官方支持的版本,避免使用不存在的版本号或格式错误的版本字符串。

  • 匹配CMake与Hunter版本兼容性
    你使用的CMake版本(3.31.20241217)属于开发版,可能与当前Hunter版本存在兼容性问题。建议:

    • 降级CMake到稳定发布版(如3.28.x系列)
    • 升级Hunter到最新版本,确保两者版本匹配
  • 清理缓存重新编译
    删除现有builddir目录,重新执行编译命令:

    rm -rf builddir
    cmake -B builddir -Wno-dev
    

    避免旧缓存中的无效配置干扰新编译流程。

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

火山引擎 最新活动