环境

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. [题解] Atcoder Regular Contest ARC 147 A B C D E 题解

    点我看题 A - Max Mod Min 非常诈骗.一开始以为要观察什么神奇的性质,后来发现直接模拟就行了.可以证明总操作次数是\(O(nlog a_i)\)的.具体就是,每次操作都会有一个数a被b取 ...

  2. 利用POI遍历出层级结构的excel表格

    import java.util.ArrayList; import java.util.List; import org.apache.poi.ss.util.CellRangeAddress; p ...

  3. Java一次返回中国所有省市区三级树形级联+前端vue展示【200ms内】

    一.前言 中国省市区还是不少的,省有34个,市有391个,区有1101个,这是以小编的库里的,可能不是最新的,但是个数也差不了多少. 当一次返回所有的数据,并且还要组装成一个三级树,一般的for,会循 ...

  4. 各大厂 C/C++ 编程规范详解

    来吧!各大厂知名规范体系~ 各有特点各有侧重~ Google C++ Style Guide Google C++ Style Guide,[中文版],简称 GSG,谷歌的 C++ 编程规范,在国内有 ...

  5. 41.SessionAuthenticatio和自定义认证

    SessionAuthentication认证介绍 SessionAuthentication使用了Django默认的会话后端 适合AJAX客户端等运行在同样会话上下文环境中的模式 是DRF默认的认证 ...

  6. 完全背包问题 —— 贪心优化 DP 范围

    题意: 现在有 \(2n+1\) 个物品(\(n\le 300\)),体积分别为 \(-n,-n+1,\dots,-1,0,1,\dots,n\),第 \(i\) 个物品有 \(a_i\) 个,求选出 ...

  7. 一、Go语言开篇介绍

    Go语言开篇介绍 Go语言 是Google公司 在2007开发一种静态强类型.编译型语言,并在 2009 年正式对外发布. Go语言以其近C的执行性能和近解析型语言的开发效率,以及近乎于完美的编译速度 ...

  8. Mysql之MGR高可用实战案例

    MGR高可用实战案例 1.环境准备 node1 rocky8.6 10.0.0.8 node2 rocky8.6 10.0.0.18 node3 rocky8.6 10.0.0.28 2.所有节点更改 ...

  9. JS逆向实战1——某省阳光采购服务平台

    分析 其实这个网站基本没有用到过什么逆向,就是简单的图片base64加密 然后把连接变成2进制存成文件 然后用ocr去识别即可 !! 注意 在获取图片连接 和对列表页发起请求时一定要用一个请求,也就是 ...

  10. Kubernetes基础_Service暴露的两种方式

    一.前言 kubernetes集群中,pod是多变的,可以被新建或删除,而且ip不稳定,不方便集群外部访问,所以提供了一种新的资源 Service ,就是就是 a set of Pod ,作用是提供一 ...