返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >Conan中的C/C++的依赖管理
  • 610
分享到

Conan中的C/C++的依赖管理

C++的依赖管理下载conan 2023-01-12 18:01:29 610人浏览 泡泡鱼
摘要

对于新一代的编程语言Java、python,当编译、运行时需要第三方的库,可以用语言自带的工具,下载这些依赖库,级联依赖的库也会被下载,部署时也会去下载或者用之前下载的。 而C/C+

对于新一代的编程语言Java、python,当编译、运行时需要第三方的库,可以用语言自带的工具,下载这些依赖库,级联依赖的库也会被下载,部署时也会去下载或者用之前下载的。

C/C++编译、运行时,可以链接操作系统里的动态库,这些库的下载需要手工执行yum,部署时也需要这样安装依赖库。

C/c++与Java、Python都有库依赖问题,但是C/C++语言没有自带的包管理机制,也许是因为C/C++更多的应用于系统程序领域,Java、Python更多用于应用程序领域,对快速开发和部署要求更高。

不过现在逐渐进化出C/C++的依赖管理工具,C/C++的编译部署也可以像Java、Python那样。

这个工具就是conan,当然还有别的C/C++依赖管理工具,不过我试用了一下conan,还是挺好用的。

下面用Getting Started — conan 1.56.0 documentation

的例子说明,这个例子编译一个cpp程序:

#include "Poco/MD5Engine.h"
 #include "Poco/DigestStream.h"

 #include <iOStream>

 int main(int arGC, char** argv){
     Poco::MD5Engine md5;
     Poco::DigestOutputStream ds(md5);
     ds << "abcdefghijklmnopqrstuvwxyz";
     ds.close();
     std::cout << Poco::DigestEngine::digestToHex(md5.digest()) << std::endl;
     return 0;
 }

这个程序用到了poco/1.9.4这个库,我们的方法是用conan下载,然后用cmake编译。

一、下载conan

这个conan是个python3程序,它的获取可以通过pip install,例如:

pip install conan

二、下载/安装C/C++依赖库

当我们要编译的C/C++程序需要依赖某个库时,有了conan的包管理,不再需要在操作系统上用yum安装了,而是用conan install命令,这个命令会寻找conanfile.txt,然后安装里面指定的库:

[requires]
poco/1.9.4

[generators]
cmake

 [requires]段指定要安装的库/包的名称,[generators]指定为哪编译工具生成配置文件,这里生成cmake的配置文件,其中包括编译时使用这些库的编译选项。

然后在conanfile.txt所在目录下执行

conan install .

这一步生成了conanbuildinfo.cmake

三、编译时使用依赖库

如何在编译时使用之前下载的依赖库呢?

之前的conan install,在下载了依赖库时,也创建了cmake配置,只要把这些配置添加到cmake工程中,就可以在编译时使用这些依赖库了。

例如,创建CMakeLists.txt,内容如下:

cmake_minimum_required(VERSION 2.8.12)
 project(MD5Encrypter)

 add_definitions("-std=c++11")

 include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
 conan_basic_setup()

 add_executable(md5 md5.cpp)
 target_link_libraries(md5 ${CONAN_LIBS})

对于版本大于5.1的GCC编译器,执行下面的命令,否则连接时会出错:

conan profile new default --detect # Generates default profile detecting GCC and sets old ABIconan profile update settings.compiler.libcxx=libstdc++11 default

然后在CMakeLists.txt所在目录,执行:

cmake .

make

在bin目录下生成md5可执行文件,这个可执行的文件是静态链接poco库的,用这种方法编译的可执行文件都是静态链接conan下载的库的。

到此这篇关于Conan中的C/C++的依赖管理的文章就介绍到这了,更多相关C++的依赖管理内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Conan中的C/C++的依赖管理

本文链接: https://lsjlt.com/news/177569.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Conan中的C/C++的依赖管理
    对于新一代的编程语言Java、Python,当编译、运行时需要第三方的库,可以用语言自带的工具,下载这些依赖库,级联依赖的库也会被下载,部署时也会去下载或者用之前下载的。 而C/C+...
    99+
    2023-01-12
    C++的依赖管理 下载conan
  • 如何进行C++代码的依赖管理?
    如何进行C++代码的依赖管理作为一种广泛使用的编程语言,C++常常用于开发涉及底层硬件、系统级别或具有高性能要求的应用程序。在实际开发中,C++项目往往会涉及到各种库、框架和其他依赖项,因此,进行代码的依赖管理变得尤为重要。本文将介绍几种常...
    99+
    2023-11-04
    依赖管理
  • SpringBoot的依赖管理配置
    目录1.spring-boot-starter-parent依赖2.spring-boot-starter-web依赖问题1:为什么导入dependency时不需要指定版本? 在Sp...
    99+
    2024-04-02
  • ApacheBeam中的依赖管理是如何处理的
    在Apache Beam中,依赖管理是通过构建工具(如Maven或Gradle)来处理的。开发者可以在项目的构建文件中指定所需的依赖...
    99+
    2024-03-11
    Beam
  • C#中如何实现依赖注入
    在C#中实现依赖注入通常可以使用一些现成的框架,比如ASP.NET Core中自带的依赖注入容器。以下是一个简单的示例: 首先,定义...
    99+
    2024-04-03
    C#
  • SpringBoot的依赖管理配置方法
    这篇文章主要介绍“SpringBoot的依赖管理配置方法”,在日常操作中,相信很多人在SpringBoot的依赖管理配置方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SpringBoot的依赖管理配置方法...
    99+
    2023-07-02
  • SpringBoot依赖管理的源码解析
    目录一. 依赖管理Ⅰ. 部分dependency导入时为啥不需要指定版本?1.1 父依赖启动器的工作1.2 问题答案Ⅱ. 项目运行依赖的JAR包是从何而来的2.1 分析源码2.2 问...
    99+
    2023-05-18
    SpringBoot 依赖管理 SpringBoot 源码
  • Maven依赖管理的用法介绍
    目录一、依赖传递1. 直接依赖与间接依赖2. 依赖传递冲突时的优先规则(1) 路径优先(2) 声明优先(3) 后声明覆盖先声明二、依赖管理1. 可选依赖2. 排除依赖3. 可选依赖与...
    99+
    2024-04-02
  • spring项目的依赖包怎么管理
    在Spring项目中,可以使用Maven或者Gradle来管理项目的依赖包。使用Maven管理项目的依赖包:1. 在项目的pom.x...
    99+
    2023-09-21
    spring
  • SpringBoot依赖管理的特性是什么
    这篇文章主要讲解了“SpringBoot依赖管理的特性是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot依赖管理的特性是什么”吧!1.父依赖parent介绍pom文件中...
    99+
    2023-07-02
  • Node工程的依赖包管理方式
    目录一、分类管理1、dependencies2、devDependencies3、optionalDependencies4、peerDependencies5、bundledDep...
    99+
    2023-05-17
    Node依赖包管理方式 Node工程的依赖包 Node依赖包
  • C#中依赖倒置原则DIP的示例分析
    这篇文章主要介绍C#中依赖倒置原则DIP的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、前言我们先来看看传统的三层架构,如下图所示:从上图中我们可以看到:在传统的三层架构中,层与层之间是相互依赖的,UI层...
    99+
    2023-06-29
  • 如何在Git中管理Java项目中的Numpy依赖?
    在Java项目中使用Numpy是一种常见的需求,Numpy是Python中一个非常流行的数学库,它提供了高性能的多维数组对象以及用于处理数组的工具。本文将介绍如何在Git中管理Java项目中的Numpy依赖。 为什么需要管理Numpy依赖 ...
    99+
    2023-08-29
    git 数组 numpy
  • 【Maven】依赖管理—导入jar包的三种方式、依赖范围设置
    目录 一、使用坐标导入 jar 包  二、使用坐标导入 jar 包 – 快捷方式  三、使用坐标导入 jar 包 – 自动导入  四、依赖范围 一、使用坐标导入 jar 包 在 pom.xml 中编写 标签 在 标签中 使用 引入坐...
    99+
    2023-09-15
    maven jar java intellij-idea 坐标导入依赖
  • golang依赖管理之mod的示例分析
    这篇文章主要介绍了golang依赖管理之mod的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。golang 依赖管理之 modgo 很早就考虑了依赖管理的问题,内置 ...
    99+
    2023-06-14
  • python依赖包管理的方法有哪些
    Python的依赖包管理有以下几种方法:1. Pip:Pip是Python官方推荐的包管理工具,可以通过命令行使用pip来安装、卸载...
    99+
    2023-09-23
    python
  • Kotlin+buildSrc更好的管理Gradle依赖译文
    目录前言管理Gradle依赖的三种不同方法:1.手动管理2.Google推荐:使用gradle的extra属性3.Kotlin + buildSrc == Android Studi...
    99+
    2024-04-02
  • Bash中如何使用NPM管理Spring应用的依赖?
    Spring是一个流行的Java应用框架,用于构建企业级应用程序。与其他开源框架一样,Spring也需要依赖库的支持。在本文中,我们将介绍如何使用npm管理Spring应用的依赖。 npm是一个流行的Node.js包管理器,它可以帮助我们...
    99+
    2023-09-10
    npm bash spring
  • go语言依赖C语言的深度探究
    go 语言对 c 语言的深度依赖go 语言高度依赖于 c 语言,这带来了以下好处和挑战:好处:性能和效率低级访问挑战:复杂性和可移植性安全漏洞 Go 语言对 C 语言的深度依赖 引言 ...
    99+
    2024-04-08
    go语言 c语言 标准库
  • 宝塔Linux面板安装Composer依赖管理工具与PHP依赖包的方法
    最近看见腾讯云有一个AI绘画还挺有意思,想搞来写个接口玩  但是Composer一直运行不成功 提示xdebug什么的 最后经过搜索 发现 需要删除你宝塔里所有php中禁用的putenv函数 然后重启php就可以了!  然后就可以运行这...
    99+
    2023-10-08
    composer php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作