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

使用Conan构建多个依赖库并打包为无需Conan即可使用的归档文件

解决方案
  • 先编写子目录中每个依赖的conanfile.py,按照普通Conan包的规则实现source()、build()、package()方法,package()方法负责将当前依赖编译生成的头文件、库文件等产物复制到包的内置输出目录即可,不需要提前单独执行构建、导出命令。
  • 先将本地子目录的依赖注册为Conan可编辑包,执行以下命令一次即可,后续修改子目录代码也不用重新注册:
conan editable add json/3.10.4 nlohmann_json/3.10.4@local
conan editable add opencv/4.4.0 opencv/4.4.0@local
# 如果需要opencv5.1.0就再加对应注册命令
  • 根目录的conanfile.py直接作为依赖聚合的消费端配置,不需要实现源码拉取、编译逻辑,示例代码如下:
from conans import ConanFile
import os

class DepBundleConan(ConanFile):
    settings = "os", "arch", "compiler", "build_type"
    # 声明需要打包的依赖
    requires = [
        "nlohmann_json/3.10.4@local",
        "opencv/4.4.0@local"
    ]
    # 强制所有依赖从源码编译,不使用任何预编译二进制包
    def configure(self):
        self.build_policy = "always"

    def deploy(self):
        # 按照你的要求定义输出目录名,Windows x86_64对应win64_x86可直接写死
        output_folder = f"{self.settings.os}_{self.settings.arch}".lower()
        # 遍历所有依赖,聚合产物
        for dep in self.dependencies.values():
            # 复制头文件
            self.copy("*", 
                      src=os.path.join(dep.package_folder, "include"), 
                      dst=os.path.join(output_folder, "include"))
            # 复制静态库/动态库导入库
            self.copy("*.a", "*.lib",
                      src=os.path.join(dep.package_folder, "lib"), 
                      dst=os.path.join(output_folder, "lib"))
            # 如需复制Windows动态库,新增以下行即可
            # self.copy("*.dll",
            #           src=os.path.join(dep.package_folder, "bin"), 
            #           dst=os.path.join(output_folder, "bin"))
  • 单命令执行全流程构建和聚合,根目录直接执行以下命令即可,无需进入子目录操作:
conan install . -s os=Windows -s arch=x86_64 -s compiler="Visual Studio" -s compiler.version=16 -s build_type=Release --build=*

执行完成后,根目录就会生成你需要的win64_x86目录结构,直接交给CI/CD归档即可。

如果不想使用Conan,也可以选择vcpkg作为替代工具:自定义编译规则后执行vcpkg install opencv4 nlohmann-json --triplet=x64-windows,再执行vcpkg export --zip就能直接导出聚合好的依赖包,也符合从源码编译、无远程预编译依赖的要求。

内容的提问来源于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.29 11:27:03