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

GitHub Actions Ubuntu运行器中Conan依赖包找不到触发find_package报错

问题核心原因

你本地Linux环境预先安装了系统级的docopt开发包,所以CMake的find_package可以直接找到系统路径下的配置文件;而GitHub Action的Ubuntu运行器是纯净环境,只有Conan安装的依赖,但你当前的Conan配置和CMake逻辑不匹配,导致CMake无法找到Conan安装的docopt配置。

另外你已经使用了Conan的cmake生成器,并且调用了conan_basic_setup(),Conan已经自动完成了所有依赖的头文件路径、库路径、链接参数的配置,完全不需要额外调用find_package查找依赖。

解决方案

方案一(最简便,推荐)

直接删除CMakeLists.txt里的两行find_package代码即可:

# 删除下面两行
find_package(docopt COMPONENTS CXX REQUIRED)
find_package(SQLite3)

删除后Conan会自动处理所有依赖的链接和引入,本地和CI环境都可以正常运行。

方案二(需要保留find_package逻辑)

如果你的项目必须使用find_package管理依赖,修改两处配置即可:

  1. 修改conanfile.txt的generators配置,新增cmake_find_package生成器:
[requires]
docopt.cpp/0.6.3
sqlite3/3.36.0

[generators]
cmake
cmake_find_package
  1. 修改CMakeLists.txt里的find_package调用,包名和Conan中的依赖名保持一致:
# 把docopt改为docopt.cpp,和Conan里的依赖名匹配
find_package(docopt.cpp COMPONENTS CXX REQUIRED)
find_package(SQLite3 REQUIRED)

额外注意事项

如果修改后还是报错,可以在CI的Conan安装步骤加上参数指定生成和宿主配置,避免Conan默认配置和编译配置不匹配:

conan install .. --build missing -s build_type=${{env.BUILD_TYPE}}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:15:11