Conan中的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

三、编译时使用依赖库

如何在编译时使用之前下载的依赖库呢&#xff1f;

之前的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 ABI conan profile update settings.compiler.libcxx=libstdc++11 default

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

cmake .
make

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

主题模板站

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值