Conan教程(4)—— 使用包

一、安装依赖项

        本节译自:https://docs.conan.io/en/latest/using_packages/conanfile_txt.html

        在开始中我们使用了conan install命令来下载Poco库并构建了一个示例。
        通过运行conan install时创建的conanbuildinfo.cmake文件,可以查看到许多CMake变量。例如,CONAN_INCLUDE_DIRS_ZLIB(定义zlib头文件的包含路径)和 CONAN_INCLUDE_DIRS(定义所有依赖项头文件的包含路径)。
在这里插入图片描述
        如果检查每个变量定义的完整路径,则会看到它指向<userhome>文件夹下的文件夹。这些文件夹就是本地缓存,是包和二进制包的存储和缓存位置,因此不必再次检索它们。可以使用conan search检查本地缓存,并使用conan remove命令删除包。
        如果导航到conanbuildinfo.cmake中引用的文件夹,则将找到每个包的头文件和库。
        如果在终端中执行conan install poco/1.9.4@命令,Conan会将Poco包及其依赖项(openssl/1.0.2t和zlib/1.2.11)下载到本地缓存,并在终端中显示其已被安装。虽然可以像这样单独安装每个依赖项,但是建议处理依赖项的方法是使用conanfile.txt文件。conanfile.txt的结构如下所述。

1、需求

        所需的依赖关系应在[requires]部分中指定。比如:

[requires]
mypackage/1.0.0@company/stable

        说明:

  • mypackage:是包的名称,通常与项目/库名称相同。
  • 1.0.0:是通常与打包的项目/库相匹配的版本。这可以是任何字符串,不限制为数字。因此,可以指示这是“develop”还是“master”。包可以被覆盖,因此还可以定期重新生成“nightly”或“weekly”之类的包。
  • company:是指包的所有者。本质上它是一个名称空间,它允许不同的用户为具有相同名称的相同库拥有自己的包。
  • stable:是指通道。通道提供了另一种方式来为同一库提供不同的包变体,通常将其表示为包的成熟度,例如:“
    stable”或“ testing”。但它们可以用于诸如包修订版之类的任何目的(例如,库版本未更改,但包食谱已更新)。

可选参数user/channel
        如果包是在未指定userchannel情况下创建和上传的,则可以在指定引用时忽略user/channel

[requires]
packagename/1.2.0

覆盖依赖
        可以指定多个依赖项,并覆盖可传递的依赖包。在示例中,Conan安装了Poco包及其所有传递依赖项:

  • openssl/1.0.2t
  • zlib/1.2.11

        提示: 保持OpenSSL库更新是很重要的,所以这个例子非常恰当的表达了这个需求。
        假设已经发布了新版本的OpenSSL库,并且有相应的新Conan包可用。在我们的示例中,我们不需要等到pocoproject生成包含新的OpenSSL库的Poco的新包。
        只需在[requires]中输入新版本:

[requires]
poco/1.9.4
openssl/1.0.2u

        第二行将使用当前不存在的openssl/1.0.2u覆盖Poco所需的openssl/1.0.2t
        另一个示例中,我们可能想使用一些Zlib的alpha版中的新特性:可以用另一个指定了user/channel的Zlib来替代:

[requires]
poco/1.9.4
openssl/1.0.2u
zlib/1.2.11@otheruser/alpha

        注意:可以使用环境变量CONAN_ERROR_ON_OVERRIDE来为每个没有显式设置override关键字的需求抛出异常。

2、生成器

        Conan从conanfile.txt中读取[generators]部分,并为每个生成器创建文件,文件包含了将程序与指定需求进行链接所需的所有信息。生成的文件通常是临时的,在构建文件夹中创建,并且不提交给版本控制,因为它们具体指向本地文件夹的路径,而该路径在另一台计算机上可能并不存在。此外,生成的文件与运行conan install时指定的配置(Debug/Release、x86/x86_64等)相匹配非常重要。如果配置被修改了,文件将相应跟着修改。

3、选项

        可以看到在安装过程中可以指定一些设置,例如:conan install .. -s build_type=Debug。这些设置通常是客户端机器定义项目的配置,因此它们在食谱中不能有默认值。比如,对于包食谱来说,将“ Visual Studio”声明为默认编译器是没有意义的,因为这是最终用户定义的东西,并且也无法在Linux中运行。
        另一方面,选项适用于特定的包配置,可以在配方中将其设置为默认值。例如,一个包可以定义其默认链接是静态的,如果消费者没有另外指定,则应使用此链接。
        注意: 可以使用conan get <reference>命令检查食谱,从而查看包的可用选项:$ conan get poco/1.9.4@
  

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值