环境

ubuntu:bionic的docker image

docker run -it ubuntu:bionic

预装工具

apt-get install cmake

安装conan

# pip3 install conan
Collecting conan
# conan -v
Conan version 1.33.0

使用conan

官方文档:https://docs.conan.io/en/latest/getting_started.html

搜索包

# conan search poco --remote=conan-center
WARN: Remotes registry file missing, creating default one in /root/.conan/remotes.json
Existing package recipes:
poco/1.8.1 <<< 已有的版本
poco/1.9.3
poco/1.9.4
poco/1.10.0
poco/1.10.1

导入包

# conan inspect poco/1.9.4
poco/1.9.4: Not found in local cache, looking in remotes...
poco/1.9.4: Trying with 'conan-center'...
Downloading conanmanifest.txt completed [0.59k]
Downloading conanfile.py completed [12.59k]
Downloading conan_export.tgz completed [0.30k]
Decompressing conan_export.tgz completed [0.00k]
poco/1.9.4: Downloaded recipe revision 0
name: poco
version: 1.9.4
url: https://github.com/conan-io/conan-center-index
homepage: https://pocoproject.org
license: BSL-1.0

编译

# conan profile new default --detect
Found gcc 7
Found clang 6.0
gcc>=5, using the major as version ************************* WARNING: GCC OLD ABI COMPATIBILITY *********************** Conan detected a GCC version > 5 but has adjusted the 'compiler.libcxx' setting to
'libstdc++' for backwards compatibility.
Your compiler is likely using the new CXX11 ABI by default (libstdc++11). If you want Conan to use the new ABI for the default profile, run: $ conan profile update settings.compiler.libcxx=libstdc++11 default Or edit '/root/.conan/profiles/default' and set compiler.libcxx=libstdc++11 ************************************************************************************ # conan profile update settings.compiler.libcxx=libstdc++11 default

准备三个文件放在同一个目录如:conan

conan$ ls
CMakeLists.txt conanfile.txt md5.cpp 文件内容: conan$ cat conanfile.txt
[requires]
poco/1.9.4 [generators]
cmake conan$ cat md5.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;
} conan$ cat 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})

conan编译

conan# mkdir build && cd build
build# conan install ..
Configuration:
[settings]
arch=x86_64
arch_build=x86_64
build_type=Release
compiler=gcc
compiler.libcxx=libstdc++11
compiler.version=7
os=Linux
os_build=Linux
conanfile.txt: Generated conaninfo.txt
conanfile.txt: Generated graphinfo build# cmake .. -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release
-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Configuring done
-- Generating done
-- Build files have been written to: /root/build build# cmake --build .
Scanning dependencies of target md5
[ 50%] Building CXX object CMakeFiles/md5.dir/md5.cpp.o
[100%] Linking CXX executable bin/md5
[100%] Built target md5 build# ls
CMakeCache.txt Makefile cmake_install.cmake conanbuildinfo.cmake conaninfo.txt
CMakeFiles bin conan.lock conanbuildinfo.txt graph_info.json build# ./bin/md5
c3fcd3d76192e4007dfb496cca67e13b

环境完成!

打包项目

官网打包教程:https://docs.conan.io/en/latest/creating_packages/getting_started.html

下面要解决的问题是conanfile.txt中的conan包是怎么生成的。按照官网的打包步骤走了一遍,把源码打包成一个conan包。假设我们要将一个hello的源码打包成一个conan包

准备源码

# mkdir mypkg && cd mypkg
//这里会从github上下载hello的程序
/mypkg# conan new hello/0.1 -t

编译成conan包

方法1:

/mypkg# conan create . demo/testing
[100%] Built target example
hello/0.1@demo/testing (test package): Running test()
Hello World Release! <<< 执行hello程序

方法2:

上面的编译步骤等价于

/mypkg# conan export . demo/testing
/mypkg# conan install hello/0.1@demo/testing --build=hello
# package is created now, use test to test it
/mypkg# conan test test_package hello/0.1@demo/testing
hello/0.1@demo/testing (test package): Running test()
Hello World Release! <<< 执行hello程序

查看生成的包

# conan search hello
Existing package recipes: hello/0.1@demo/testing

说明已经将hello的程序源码打包成了conan包。

conan环境安装的更多相关文章

  1. 使用专业的消息队列产品rabbitmq之centos7环境安装

      我们在项目开发的时候都不可避免的会有异步化的问题,比较好的解决方案就是使用消息队列,可供选择的队列产品也有很多,比如轻量级的redis, 当然还有重量级的专业产品rabbitmq,rabbitmq ...

  2. Linux下xampp集成环境安装配置方法 、部署bugfree及部署禅道

    XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包.XAMPP 是一个易于安装且包含 MySQL.PHP 和 Perl 的 Apache 发行版.XAMPP 的确非 ...

  3. node.js环境安装,及连接mongodb测试

    1.node.js环境安装 npm config set python python2.7npm config set msvs_version 2013npm config set registry ...

  4. 谈谈React Native环境安装中我遇到的坑

    谈谈React Native环境安装 这个坑把我困了好久,真的是接近崩溃的边缘...整理出来分享给大家,希望遇到跟我一样问题的小伙伴能尽快找到答案. 首先,这是在初始化App之后,react-nati ...

  5. Kali Linux渗透测试实战 1.2 环境安装及初始化

    1.2 环境安装及初始化 目录(?)[-] 环境安装及初始化 下载映像 安装虚拟机 安装Kali Linux 安装中文输入法 安装VirtualBox增强工具 配置共享目录和剪贴板 运行 Metasp ...

  6. Linux初学 - Elasticsearch环境安装

    下载 https://www.elastic.co/downloads/elasticsearch 安装 rpm -ivh 也可以双击rpm包安装 修改elastaticsearch host配置 修 ...

  7. Win7下Python2.7环境安装paramiko模块

    Win7下Python2.7环境安装paramiko模块,经过安装并测试成功,整理文档如下: 1.下载安装Windows版本的Python2.7,我默认装在C:\Python27 我的python已经 ...

  8. [ALM]一步一步搭建MS ALM环境 - 安装TFS + SQL SERVER

    描述: 安装SQL SERVER 2012,安装TFS 2013,配置TFS,挽起袖子,准备干活儿 步骤: 1,打开Hyper-V Manager,参考[Hyper-V]使用操作系统模板创建新的虚拟机 ...

  9. Sencha Toucha 2 —1.环境安装配置、在线打包、离线打包

    环境安装配置        1. 下载 1.1     Sencha Touch 下载 http://cdn.sencha.com/touch/sencha-touch-2.2.1-gpl.zip 1 ...

  10. [转载]SharePoint 2013测试环境安装配置指南

    软件版本 Windows Server 2012 标准版 SQL Server 2012 标准版 SharePoint Server 2013 企业版 Office Web Apps 2013 备注: ...

随机推荐

  1. sql内连查询

    select <查询的列名> from <表名> inner join `<连接的表名称>` on <第一张表的主键> = <第二张表的外键> ...

  2. 强国杯东杯分区赛miscwp

    ​ 目录 不要被迷惑 PCAP文件分析 平正开 不要被迷惑 ​编辑 导出http ​编辑 得到flag.zip后直接爆破密码 ​编辑 得到​编辑 然后一键解码 ​编辑 flag{WImuJeqSNPh ...

  3. 数据结构中的哈希表(java实现)利用哈希表实现学生信息的存储

    哈希表 解释 哈希表是一种根据关键码去寻找值的数据映射结构,该结构通过把关键码映射的位置去寻找存放值的地方 内存结构分析图 1.定义一个类为结点,存储的信息 2.定义链表的相关操作 3.定义一个数组存 ...

  4. Ignite实战

    1.概述 本篇博客将对Ignite的基础环境.集群快照.分布式计算.SQL查询与处理.机器学习等内容进行介绍. 2.内容 2.1 什么是Ignite? 在学习Ignite之前,我们先来了解一下什么是I ...

  5. 深度优先搜索(Depth-First-Search)dfs代码模板

    void dfs()//参数用来表示状态 { if(到达终点状态) { ...//根据需求添加 return; } if(越界或者是不合法状态) return; if(特殊状态)//剪枝,去除一些不需 ...

  6. 常用Linux命令(常年更新)

    Linux后台运行脚本: nohup python -u test.py > out.log 2>&1 & nohup sh **.sh > /dev/null 2& ...

  7. 【炫丽】从0开始做一个WPF+Blazor对话小程序

    大家好,我是沙漠尽头的狼. .NET是免费,跨平台,开源,用于构建所有应用的开发人员平台. 本文演示如何在WPF中使用Blazor开发漂亮的UI,为客户端开发注入新活力. 注 要使WPF支持Blazo ...

  8. KeeWiDB的高性能修炼之路:架构篇

    数据也有冷热之分,你知道吗? 根据访问的频率的高低可将数据分为热数据和冷数据,访问频率高的则为热数据,低为冷数据.如果热.冷数据不区分,一并存储,显然不科学.将冷数据也存储在昂贵的内存中,那么你想,成 ...

  9. 2022春每日一题:Day 35

    题目:[NOI Online #1 提高组] 冒泡排序 看到范围这么大,求逆序对,有修改,估计也只能树状数组了,考查冒泡排序性质,排第i次冒泡排序,总逆序对个数会减少i的逆序对个数,然后交换两个数,他 ...

  10. 2022春每日一题:Day 17

    今天打CF去了,但是很菜,只做了三题.赛后一分钟做出了第四题,wa了,改了一下下,过了 第一题就是对应的小写字母在大写字母前出现. 第二题直接dfs. 第三题dp,f[i][j]表示以第i个数开始加了 ...