one package 如何与 Conan 相互依赖的库?
How does one package inter-dependent libraries with Conan?
我有一个项目,我正在尝试使用 conan 作为包管理器。
该项目使用了大量的图书馆,其中大部分是自给自足的。但是,其中一些依赖于另一个库。
举一个具体的例子,假设我们有一个项目 P 需要库 A 和 B。A 是自包含的,但是 B 依赖于 A 的编译和链接。
我可以轻松地为库 A 创建 conanfile.py。我可以为项目 P 创建 conanfile.txt。假设 A 和 B 尚未构建,我希望能够输入P 的构建目录:
conan install ../ --build=missing
让柯南下载、编译和安装库 A,然后下载编译和安装库 B,B 正确引用 A。
B的conanfile.py的正确写法是什么?
写包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
您可以检查一些已经在管理传递依赖项的现有包:
- ZMQ c++ 包装器,它依赖于 zmq,并且是一个非常简单的示例,因为包装器仅 header:https://www.conan.io/source/zmqcpp/4.1.1/memsharded/stable
- Boost(依赖于 Zlib、BZip,但有条件地检查 conanfile 的
config()
方法):https://www.conan.io/source/Boost/1.60.0/lasote/stable
- Poco,也有条件地依赖于 OpenSSL,MySQLClient:https://www.conan.io/source/Poco/1.7.3/lasote/stable
我有一个项目,我正在尝试使用 conan 作为包管理器。 该项目使用了大量的图书馆,其中大部分是自给自足的。但是,其中一些依赖于另一个库。 举一个具体的例子,假设我们有一个项目 P 需要库 A 和 B。A 是自包含的,但是 B 依赖于 A 的编译和链接。
我可以轻松地为库 A 创建 conanfile.py。我可以为项目 P 创建 conanfile.txt。假设 A 和 B 尚未构建,我希望能够输入P 的构建目录:
conan install ../ --build=missing
让柯南下载、编译和安装库 A,然后下载编译和安装库 B,B 正确引用 A。
B的conanfile.py的正确写法是什么?
写包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
您可以检查一些已经在管理传递依赖项的现有包:
- ZMQ c++ 包装器,它依赖于 zmq,并且是一个非常简单的示例,因为包装器仅 header:https://www.conan.io/source/zmqcpp/4.1.1/memsharded/stable
- Boost(依赖于 Zlib、BZip,但有条件地检查 conanfile 的
config()
方法):https://www.conan.io/source/Boost/1.60.0/lasote/stable - Poco,也有条件地依赖于 OpenSSL,MySQLClient:https://www.conan.io/source/Poco/1.7.3/lasote/stable