Conan is a portable package manager, intended for C and C++ developers, but it is able to manage builds from source, dependencies, and precompiled binaries for any language.
Conan是一个跨平台的包管理工具,面向c和c++开发者,但是他能够从源码,依赖和预编译二进制包。
 
biicode 因为2015年因为经营原因关闭了,Conan就成为接班人,项目截至2017年3月仍然非常活跃。
 
官方网站:
https://www.conan.io/
 
作者:骆铮
链接:https://www.zhihu.com/question/47298264/answer/105388121
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

之前在管理依赖的时候尝试过,大概说说第一印象:

  • 自身安装包:全平台覆盖,有完善的binary这很方便。但是基于Python可能在一些场合会带来麻烦,更倾向于搞出一个bulkcompile的.cpp,这样可以无痛切换到conan而不会因为自身而带来额外的依赖,毕竟不是所有项目都希望引入Py。
  • 是采用Binary还是Source是每个包管理都会遇到的问题,binary需要维护,source对于Cpp来说编译速度太慢。目前Conan貌似是对大包提供了Binary,找不到时会fallback到Source上去,看起来是一个比较好的解决方案。但是不知道二进制兼容性(RTTI、cxxabi)这类的做得怎么样(更新:看C/C++ Open Source Package Manager ,大概对每个编译器大版本都提供了Release和Debug两个二进制版本,这样解决了abi问题,但RTTI估计是没戏了)。不过好在可以自己架服务器提供包。
  • 目前的官方包还是太少,像leveldb之类的都找不到
  • CMake集成做的不错

依赖管理其实本身就是一个矛盾体,如下表
<img src="https://pic3.zhimg.com/7a08782d5cce9862aef7ca76f7132ef2_b.png" data-rawwidth="720" data-rawheight="311" class="origin_image zh-lightbox-thumb" width="720" data-original="https://pic3.zhimg.com/7a08782d5cce9862aef7ca76f7132ef2_r.png">

c++包管理工具conan的更多相关文章

  1. c++ cmake及包管理工具conan简单入门

    cmake是一个跨平台的c/c++工程管理工具,可以通过cmake轻松管理我们的项目 conan是一个包管理工具,能够自动帮助我们下载及管理依赖,可以配合cmake使用 这是一个入门教程,想深入了解的 ...

  2. Python黑帽编程1.3 Python运行时与包管理工具

    Python黑帽编程1.3  Python运行时与包管理工具 0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Attack and ...

  3. 包管理工具Carthage使用

    iOS项目中第三方开源库的工具有Cocoapods和Carthage,swift官方出了一个包管理工具SPM(Swift Package Manager). 首先,大体讲一下Cocoapods和Car ...

  4. Node包管理工具

    Node包管理工具 只是简单的介绍一些工具的使用,有利于开发过程.除了介绍Node包管理工具,还介绍了前端打包工具,前端模块管理工具 Node包管理工具:    --npm    --cnpm    ...

  5. godep 包管理工具

    godep是解决包依赖的管理工具 安装 go get github.com/tools/godep 成功安装后,在GOPATH的bin目录下会有一个godep可执行的二进制文件,后面执行的命令都是用这 ...

  6. 【转载】Python的包管理工具Pip

    接触了Ruby,发现它有个包管理工具RubyGem很好用,并且有很完备的文档系统http://rdoc.info 发现Python下也有同样的工具,包括easy_install和Pip.不过,我没有细 ...

  7. Python的包管理工具Pip (zz )

    Python的包管理工具Pip 接触了Ruby,发现它有个包管理工具RubyGem很好用,并且有很完备的文档系统http://rdoc.info 发现Python下也有同样的工具,包括easy_ins ...

  8. python 包管理工具

    python 包管理工具 Python当前的包管理工具链是 easy_install/pip + distribute/setuptools + distutils,显得较为混乱. 而将来的工具链组合 ...

  9. Python 包管理工具解惑

    Python 包管理工具解惑 本文链接:http://zengrong.net/post/2169.htm python packaging 一.困惑 作为一个 Python 初学者,我在包管理上感到 ...

随机推荐

  1. java Map Set遍历

    Map是java中的接口,Map.Entry是Map的一个内部接口. Map提供了一些常用方法,如keySet().entrySet()等方法,keySet()方法返回值是Map中key值的集合:en ...

  2. 防止线程退出的几种方案-不再while(true)

    有时候 调试程序的时候 .我们需要防止程序退出.比如调试一个定时服务. 方法1 while(true) {Thread.Sleep(1000)} 方法 2——(推荐) Well when you do ...

  3. Android Listview 隐藏滚动条

    在<ListView>标签中设置属性. android:fastScrollEnabled="false" 以下属性scrollbars可以设置为none也可以不设置为 ...

  4. Ways to 优化JAVA程序设计和编码,提高JAVA性能

    通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化.一般有两种方案:即优化代码或更改设计方法.我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能 ...

  5. setting.xml配置详解

    http://blog.csdn.net/uohzoaix/article/details/7035302 http://www.micmiu.com/software/build/maven-set ...

  6. 【LeetCode】47. Permutations II

    Permutations II Given a collection of numbers that might contain duplicates, return all possible uni ...

  7. 解决LLDB模式下出现message sent to deallocated instance错误

    本文在源文的基础上做整理:http://www.devdiv.com/home.php?mod=space&uid=50901&do=blog&id=50856 Xcode版本 ...

  8. oc set/get方法

    新建一个“Cocoa Touch Class”文件,命名为People People.h 写入 @interface People : NSObject @property int age; @end ...

  9. linux ---性能监控(工具)

    linux服务器性能监控-nmon Nmon 是一个分析aix和linux性能的免费工具,出自IBM,其采集的数据通过nmon_analyser生成报表 一.下载 官网下载地址 百度网盘 二.运行和使 ...

  10. RAC安装GI时运行root.sh脚本结果

    第一节点运行root.sh脚本的结果: # /u01/app//grid/root.sh Performing root user operation for Oracle 11g The follo ...