4

我有一个项目,我正在尝试使用柯南作为包管理器。该项目使用了大量的库,其中大部分是自给自足的。但是,其中一些依赖于另一个库。举一个具体的例子,假设我们有一个需要库 A 和 B 的项目 P。A 是自包含的,但 B 的编译和链接依赖于 A。

我可以轻松地为库 A 创建 conanfile.py。我可以为项目 P 创建一个 conanfile.txt。假设 A 和 B 尚未构建,我希望能够在 P 的构建目录中键入:

conan install ../ --build=missing

并让柯南下载,编译并安装库A,然后下载编译并安装库B,B对A有正确的引用。

编写B的conanfile.py的正确方法是什么?

4

1 回答 1

4

当您为包 B 编写包配方时,您指定它依赖于 A:

class PackageB(ConanFile):
    requires = "A/1.0@user/stable"

当您在项目中指定依赖项时(使用 conanfile.txt 或 conanfile.py),您可以像往常一样指定依赖项。Conan 处理传递依赖,因此它知道它必须首先构建(或检索包二进制文件,如果需要)包 A,然后是包 B。

通常,包 B 的构建脚本必须考虑对 A 的依赖。如果使用 CMake,解决方案将使用 cmake 生成器,并使用conanbuildinfo.cmake包含目录、库名称等的包 A .

文档详细说明了语法: http ://docs.conan.io/en/latest/reference/conanfile.html#requirements

您可以检查一些已经在管理传递依赖项的现有包:

于 2016-08-01T20:01:53.407 回答