conan search 无法查看依赖关系,需用 conan install --dry-run 或 conan graph info 查依赖树;前者模拟安装并输出依赖链,后者生成结构化json图,二者均受profile和settings实时影响。

conan search 能查到包名,但查不到依赖关系
直接用 conan search zlib/1.2.11 只会返回该包是否存在、有哪些二进制变体,不会显示它自己依赖了什么。想看依赖树,得用更具体的命令和上下文。
用 conan install --dry-run 查依赖图(最常用)
这是实际开发中最靠谱的方式:模拟安装过程,让 Conan 解析完整依赖链并打印出来,不真正下载或构建。
执行时需指定 profile 或环境,否则可能因 settings 不匹配而报错:
-
conan install . --dry-run --output-folder=build(当前目录有conanfile.txt或conanfile.py) -
conan install zlib/1.2.11 --dry-run -s os=Linux -s compiler=gcc -s compiler.version=11 -s compiler.libcxx=libstdc++11(查单个包在特定平台下的依赖)
输出里会包含类似这样的行:
zlib/1.2.11 requires cmake/3.25.2 cmake/3.25.2 requires openssl/3.1.3
注意:--dry-run 依赖解析是实时的,结果受当前 profile、远程仓库配置、conan.conf 中的 general.revisions_enabled 等影响。
访问 ConanCenter 页面看声明的 requires
打开 https://www.php.cn/link/04beb026201ce4b3261d8d6f182e1e9a,选中具体版本(如 1.2.11),点「Recipe」标签页,就能看到原始 conanfile.py 中的 def requirements(self) 方法。
例如 zlib 的 recipe 里可能写的是:
def requirements(self):
self.requires("cmake/3.25.2")
# 没有其他 requires → 表示它不声明显式 C++ 依赖
但要注意:页面上只展示 recipe 显式写的 requires(),不包括 build-require(如 cmake)、tool-requires(如 meson),也不反映 conditional logic(比如根据 self.settings.os 动态加依赖)。
conan graph info 输出结构化依赖数据
Conan 2.x 提供了 conan graph info 命令,能生成 JSON 格式的完整依赖图,适合脚本解析或排查传递依赖冲突:
conan graph info . --format=json > deps.json- 输出中每个节点含
"requires"字段,列出其直接依赖项的引用(name/version@user/channel) - 字段
"build_requires"和"tool_requires"是分开的,别漏看
容易踩的坑:conan graph info 默认不校验二进制可用性,所以即使某个依赖在远程不存在,只要 recipe 合法,它仍会出现在图中;真要验证是否可装,还是得配合 --dry-run 或实际 conan install。
依赖关系不是静态写死的——它随 profile、settings、recipe 中的条件逻辑实时计算。别只信文档或缓存的截图,遇到链接失败或找不到 target 时,优先跑一遍 conan graph info 或带 --dry-run 的 install 看真实解析结果。











