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

Conan如何聚合多个依赖包生成无Conan依赖的可独立分发归档

解决方案

Conan 2.x 最优方案(推荐)

无需手动修改配置文件,直接用CMakeDeps生成器搭配部署逻辑即可实现需求:

  • 在你的conanfile.py中添加如下逻辑,生成相对路径的CMake配置并同步到部署目录:
from conan import ConanFile
from conan.tools.cmake import CMakeDeps
from conan.tools.files import copy

class DepsBuilder(ConanFile):
    settings = "os", "compiler", "build_type", "arch"
    
    def generate(self):
        # 生成所有依赖的纯CMake配置文件,无Conan依赖
        cmake_deps = CMakeDeps(self)
        cmake_deps.set_property("cmake_find_mode", "config")
        cmake_deps.generate()
        # 拷贝生成的CMake配置到部署目录的cmake子目录
        copy(self, "*.cmake", self.generators_folder, f"{self.build_folder}/cmake")
        # 同步所有依赖的头文件、库、二进制到对应目录
        for dep in self.dependencies.values():
            copy(self, "*.h*", dep.cpp_info.includedirs[0], f"{self.build_folder}/include")
            copy(self, "*.a", dep.cpp_info.libdirs[0], f"{self.build_folder}/lib")
            copy(self, "*.so*", dep.cpp_info.libdirs[0], f"{self.build_folder}/lib")
            copy(self, "*.dll", dep.cpp_info.bindirs[0], f"{self.build_folder}/bin")
            copy(self, "*.lib", dep.cpp_info.libdirs[0], f"{self.build_folder}/lib")
  • 执行构建打包命令:
mkdir build
conan install <conanfile路径> -of build
tar cf archive.tar build
  • 其他机器使用时无需安装Conan,仅需传入部署目录的CMake配置路径即可,原项目CMakeLists.txt的find_package逻辑完全不需要修改,实现无侵入适配:
cmake .. -DCMAKE_PREFIX_PATH=/path/to/extracted/build/cmake

Conan 1.x 兼容方案

如果仍在使用Conan 1.x,可通过生成器加简单脚本实现:

  • 执行install时指定两个生成器,输出CMake配置和依赖信息:
conan install <conanfile路径> -if build -g cmake_find_package -g json
  • 写简单脚本读取conanbuildinfo.json中的本地缓存路径,批量将所有生成的XXXConfig.cmake中的绝对路径替换为${CMAKE_CURRENT_LIST_DIR}/../开头的相对路径,指向部署后的include、lib目录即可。

验证方法

解压归档后执行如下命令即可验证是否脱离Conan正常运行:

mkdir test_build && cd test_build
cmake .. -DCMAKE_PREFIX_PATH=/path/to/extracted/build/cmake
# 检查输出无依赖未找到的报错即配置成功

内容的提问来源于stack exchange,提问作者jacky la mouette

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:54:04