conan使用(一)--安装和应用
1. 安装conan
使用pip命令安装conan,如果没有安装pip的,可以先安装好python后,再安装pip。
pip install conan
之后就可以使用conan命令。(注意Linux下需要使用sudo提升权限)
2. 管理远程库
默认conan会添加一个远程库:conan-center:
我们可以使用search选项,搜索包:
conan search glog --remote conan-center # 在conan-center远程库中搜索glog库

我们也可以添加一个远程库:
conan remote add conan-transit https://conan-transit.bintray.com

3. 使用conan管理依赖包
这里就以使用glog作为我们的一个例子。
安装我们需要的包命令是:
conan install glog/0.4.0@bincrafters/stable -r conan-center
conan remove glog/0.4.0@bincrafters/stable
glog/0.4.0@bincrafters/stable 就是表示一个包,很明显,它的命名很有规则:包名/版本@用户/渠道 .
不过这里我们并不需要手动先去安装,可以先写一个conanfile.txt:
[requires]
glog/0.4.0@bincrafters/stable
[generators]
cmake
然后执行:
conan install .
它就会去安装我们指定的包,如果本地没有这个包,那么它就会去我们之前配置好的远程服务器上去查找。执行完install后,会在当前目录生成以下三个文件:
其中:
- conaninfo.txt这个文件可以判断包的详细信息,包括编译器信息、系统架构等;
- conanbuildinfo.cmake这个文件是给cmake引入的,即告诉cmake依赖关系,比如头文件的引用路径,库的引用路径,库的链接等信息;
- conanbuildinfo.txt这个文件方便我们阅读上面的信息。
接下来就是先编写我们的源代码,main.cpp:
#include <glog/logging.h>
int main(int argc, char* argv[])
{
google::InitGoogleLogging(argv[0]);
FLAGS_alsologtostderr = true;
LOG(INFO) << "------conan test-----------------";
google::ShutdownGoogleLogging();
return 0;
}
然后编写CmakeLists.txt文件,将conanbuildinfo.cmake配置进去(注意相对路径):
project(ConanTest)
cmake_minimum_required(VERSION 2.8.12)
include(${PROJECT_SOURCE_DIR}/conanbuildinfo.cmake)
conan_basic_setup()
add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} ${CONAN_LIBS})
然后执行cmake和make,完成编译后,即可执行:
此外需注意的是,默认conan都是采用静态库版本的包,如果想要采用动态库,只需要在conanfile.txt文件中加上以下内容:
[options]
glog:shared=True

如果想把dll等动态库拷贝到当前工程下,那么还可以在conanfile.txt文件使用import配置
[imports]
bin, *.dll -> ./bin # Copies all dll files from packages bin folder to my local "bin" folder
lib, *.dylib* -> ./bin # Copies all dylib files from packages lib folder to my local "bin" folder
conanfile.txt的更多使用细节,可以参考:https://docs.conan.io/en/latest/reference/conanfile_txt.html。
另一个需要注意的点时,选择目标包是x86还是x64,可以通过两种方式(默认是x86_64):
conan install . -s arch=x86 -s arch_build=x86conan install . --profile=myproject
profile文件可以定义[settings]字段:
[settings]
#setting=value
os_build=Linux
arch_build=x86_64
os=Macos
arch=x86_64
compiler=clang
compiler.version=3.5
compiler.libcxx=libstdc++11
build_type=Release
[options]
#MyLib:shared=True
*:shared=True
[env]
#env_var=value
CC=/usr/bin/clang
CXX=/usr/bin/clang++
[build_requires]
#tool/version@user/channel
那么我们可以自己创建一个profeile文件,定义上述设置,然后在install的时候指定配置文件即可。
补充:settings里的选项都可以直接使用 -s XX=XX 在命令中直接指定,在options你的选项都可以使用 -o XX=XX来进行指定。
有了conan管理包,复杂的C/C++工程也能像golang、python那样很方便的迁移编译。相比nuget,它对跨平台的支持更好。
conan使用(一)--安装和应用的更多相关文章
- centos7 编译安装greenplum5.7
一.配置系统 安装是以一个主节点,三个子节点进行安装.gp是在github上下载的5.7的源码.地址https://github.com/greenplum-db/gpdb/tree/5.7.0. 1 ...
- 【转】RHadoop实践系列之二:RHadoop安装与使用
RHadoop实践系列之二:RHadoop安装与使用 RHadoop实践系列文章,包含了R语言与Hadoop结合进行海量数据分析.Hadoop主要用来存储海量数据,R语言完成MapReduce 算法, ...
- (转)ZooKeeper伪分布式集群安装及使用
转自:http://blog.fens.me/hadoop-zookeeper-intro/ 前言 ZooKeeper是Hadoop家族的一款高性能的分布式协作的产品.在单机中,系统协作大都是进程级的 ...
- 在Ubuntu中安装Redis
原文地址:http://blog.fens.me/linux-redis-install/ 在Ubuntu中安装Redis R利剑NoSQL系列文章,主要介绍通过R语言连接使用nosql数据库.涉及的 ...
- Ubuntu的Redis安装
转自:http://blog.fens.me/linux-redis-install/ 1. Redis在Windows中安装 在Windows系统上安装Redis数据库是件非常简单的事情,下载可执行 ...
- ubuntu安装nodejs出现./config.gypi错误
报错的内容如下: xxx@xxx [/usr/local/src/node-v0.8.3]# ./configure { 'target_defaults': { 'cflags': [], 'def ...
- Homebrew 安装mysql
在mac上安装软件,无疑安装一个brew是个很好的选择,关于brew是什么,怎么安装建议去brew官网查看, 附上地址:brew官网 还有一篇博文 http://www.cnblogs.com/xd ...
- ubantu 安装redis
安装Redis服务器端 ~ sudo apt-get install redis-server 安装完成后,Redis服务器会自动启动,我们检查Redis服务器程序 检查Redis服务器系统进程 ~ ...
- 在CentOS上以源码编译的方式安装Greenplum数据库
集群组成: 一台主机,一台从节点. 系统环境: 操作系统:CentOS 7,64位,7.4.1708(/etc/redhat-release中查看) CPU:AMD Fx-8300 8核 内存:8GB ...
随机推荐
- Python企业面试题(系列目录)
本系列计划把Python面试中出现频率比较高知识点整理出来,以便各位童鞋复习和练习: [第1题] Python内存管理以及垃圾回收机制 [第2题] 链表的逆置 [第3题] 两个队列创建一个栈 [第4题 ...
- HTML简介 页面标记
HTML简介 HTML 1.0 : 1993年 HTML 2.0 : 1995年 HTML 3.2 : 1997年 HTML 4.01 : 1999年 HTML 5 : 2008年 XML:可扩展标 ...
- day6_logging模块
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/7/11 9:12 # @Author : 大坏男孩 # @File : da ...
- [C1] 线性回归(Linear Regression)
线性回归(Linear Regression with One / Multiple Variable) 定义符号(Symbol Definition) m = 数据集中训练样本的数量 n = 特征的 ...
- C++ 模板特化、偏特化测试程序
#include <iostream> // 偏特化的模板不会自己添加构造函数 ctor 和 析构函数 dtor #if 1 // P1 template <typename T1, ...
- python27期尚哥讲数据库:
1.下载:https://www.mysql.com/ DOWNLOADS MySQL Community (GPL) Downloads »-- MySQL Community Server Loo ...
- 第九周周二总结&&第九周周三计划
周二的主题提取使用LDA模型进行了简单的测试,效果还可以.主要是提取的分词的结果,LDA:随机生成文章各个主题比例,再根据各个主题随机生成词,词与词之间的顺序关系被彻底忽略了,这就是LDA眼中世间所有 ...
- pandas-缺失值处理
import pandas as pd import numpy as np Step 1.加载数据集 # header=0以第一行作为列名 tip = pd.read_csv("lianx ...
- [LOJ 6288]猫咪[CF 700E]Cool Slogans
[LOJ 6288]猫咪[CF 700E]Cool Slogans 题意 给定一个字符串 \(T\), 求一个最大的 \(K\) 使得存在 \(S_1,S_2,\dots,S_k\) 满足 \(S_1 ...
- hw笔试题-02
#include<stdio.h> #include<string.h> typedef struct { char *mem; char len; }m_table_t; i ...