如何使用柯南打包相互依赖的库?

时间:2016-08-01 19:27:44

标签: conan

我有一个项目,我正在尝试使用conan作为包管理器。 该项目使用了大量的图书馆,其中大部分都是自给自足的。但是,其中一些依赖于另一个库。 举一个具体的例子,假设我们有一个需要库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的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

编写包B的包装配方时,指定它取决于A:

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

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

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

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

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