如何将预先构建的文件打包到 conan 包中,然后在安装过程中只获取某些文件?

问题描述

我正在制作一个具有预构建 Windows 和 linux 文件的 conan 包。我如何确保在 conan install 期间,根据调用 conan install 命令的平台,仅从包中获取 windows 或 linux 文件

除非提供标志 conan install,否则

package() 不会调用 --build。那么我是否只需添加 --build 标志,然后在 package() 函数中根据平台复制相关文件?我并没有真正构建任何东西,只是“提供”一个具有预构建文件的包,我对通过柯南构建这些文件没有兴趣。

lib 目录基本上有一个 windows 和一个 linux 子目录,它们分别包含平台特定的文件

  • lib/windows/*

  • lib/linux/*

我将尝试带有 --build 标志的选项,看看我能达到什么结果,但我想知道是否有不同的解决方案,对柯南没有太多经验,仍在试验中。

解决方法

我正在制作一个具有预构建 Windows 和 linux 文件的 conan 包。我如何确保在 conan 安装期间,根据调用 conan install 命令的平台,仅从包中获取 windows 或 linux 文件

通过package ID。每个包都由其设置、选项和依赖项构成。因此,如果您为 Linux 或 Window 执行此操作,它们将是不同的包。

除非提供了 --build 标志,否则 conan install 不会调用 package()。

install --build 只在你想从源代码构建时使用,否则柯南会为你下载预构建的包,这是常规流程。

那么我是否只需添加 --build 标志,然后在 package() 函数中根据平台复制相关文件?我并没有真正构建任何东西,只是“提供”一个具有预构建文件的包,我对通过柯南构建这些文件没有兴趣。

文档上有一个关于 packaging binaries 的很好的部分,看看那里。

此外,Conan Center 有官方配方,只分发预先构建的,如 nodejs 配方。