• conan使用包以及管理(2)


    conan使用包

    安装依赖项

    在使用conan install命令下载 Poco库并构建示例中。
    如果您检查运行conan installconanbuildinfo.cmake时创建的文件,您可以看到那里声明了许多 CMake 变量。例如 ,它定义了 zlib 头文件的包含路径,并 定义了所有依赖项头文件的包含路径。CONAN_INCLUDE_DIRS_ZLIB CONAN_INCLUDE_DIRS
    请添加图片描述
    如果检查每个变量定义的完整路径,将看到它指向文件夹下的一个文件 夹。这些文件夹一起是本地缓存。这是包配置和二进制包存储和缓存的地方,因此不必再次检索它们。可以 使用conan search检查本地缓存,并使用conan remove命令从中删除包
    在 shell 中执行conan install poco/1.9.4@命令,Conan 会将 Poco 包及其依赖项(openssl/1.0.2t和 zlib/1.2.11)下载到本地缓存并打印有关所在文件夹的信息,但是常用的方式是通过conanfile.txt,

    所需的依赖项应在[requires]部分中指定。这是一个例子:
    [requires]
    mypackage/1.0.0@company/stable
    
    • 1
    • 2
    • 3

    generators

    conan通过conanfile.txt并为每个构建创建文件,其中包含将您的程序与指定要求链接所需的所有信息。生成的文件通常是临时的,强调生成的文件与运行conan install时指定的给定配置(调试/发布、x86/x86_64 等)匹配非常重要。如果配置更改,文件将相应更改

    Options

    例如,conan install … -s build_type=Debug。这些设置通常是由客户端计算机定义的项目范围的配置,因此它们不能在Options中具有默认值。例如,对于包Options来说,将“Visual Studio”声明为默认编译器是没有意义的,因为这是最终用户定义的东西,如果他们在 Linux 中工作,则不太可能有意义。
    可以通过使用conan get 命令检查配方来查看包的可用选项:

    $ conan get poco/1.9.4@
    
    • 1

    要仅查看配方的特定字段,您可以使用conan inspect命令:

    $ conan inspect poco/1.9.4@ -a=options
    $ conan inspect poco/1.9.4@ -a=default_options
    
    • 1
    • 2

    例如,我们可以通过编辑 [options]部分来修改前面的示例以使用动态链接而不是默认的静态链接conanfile.txt:

    [requires]
    poco/1.9.4
    
    [generators]
    cmake
    
    [options]
    poco:shared=True # PACKAGE:OPTION=VALUE
    openssl:shared=True
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    我们可以检查生成的可执行文件,并查看它是否正在使用共享库。例如,在 Linux 中,我们可以使用objdump工具并查看动态部分:

    $ cd bin
    $ objdump -p md5
    ...
    Dynamic Section:
     NEEDED               libPocoUtil.so.31
     NEEDED               libPocoXML.so.31
     NEEDED               libPocoJSON.so.31
     NEEDED               libPocoMongoDB.so.31
     NEEDED               libPocoNet.so.31
     NEEDED               libPocoCrypto.so.31
     NEEDED               libPocoData.so.31
     NEEDED               libPocoDataSQLite.so.31
     NEEDED               libPocoZip.so.31
     NEEDED               libPocoFoundation.so.31
     NEEDED               libpthread.so.0
     NEEDED               libdl.so.2
     NEEDED               librt.so.1
     NEEDED               libssl.so.1.0.0
     NEEDED               libcrypto.so.1.0.0
     NEEDED               libstdc++.so.6
     NEEDED               libm.so.6
     NEEDED               libgcc_s.so.1
     NEEDED               libc.so.6
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    可以将库的文件夹添加到路径(Linux 中的 LD_LIBRARY_PATH 环境变量、OSX 中的 DYLD_LIBRARY_PATH 或 Windows 中的系统 PATH),防止库连接不到引起错误
    在 Windows 和 OSX 中,最简单的方法是将共享库复制到可执行文件夹中,以便可执行文件找到它们,而无需修改路径。

    可以浏览本地缓存 (~/.conan/data) 中的包文件夹并查看共享库的位置。*.dll被复制到/bin是很常见的。其余的库应该在/lib文件夹中,
    
    • 1

    安装要求(从build文件夹中),然后再次运行二进制文件:

    $ conan install ..
    $ ./bin/md5
    
    • 1
    • 2
  • 相关阅读:
    为什么修补应用程序漏洞并不容易
    服务 700+ 厂商,接入 4000+游戏,数数科技 C+ 轮再融 1 亿元
    根据vsan实施方案细节化
    java毕业设计的电影社区网站mybatis+源码+调试部署+系统+数据库+lw
    LeetCode第232题—用栈实现队列
    软件测试面试屡战屡败?——我整理了一份超全面试题详解
    mysql—表单二
    【课程作业】最优化理论与方法:第三次作业
    LeetCode75——Day12
    vue的vantUI引入外部图标
  • 原文地址:https://blog.csdn.net/neuzhangno/article/details/126560053