当前位置: 首页 > news >正文

简明conan教程

简明conan教程

  • 1 关于conan
    • 1.1 来源
    • 1.2 作用
  • 2 安装conan
    • 2.1 ubuntu
      • 2.1.1 安装python3
      • 2.1.2 安装conan
    • 2.2 Windows
      • 2.2.1 安装python3
      • 2.2.2 安装conan
    • 2.3 验证conan是否成功
    • 2.4 命令解释
      • 2.4.1 Consumer commands
      • 2.4.2 Creator commands
      • 2.4.3 Package development commands
      • 2.4.4 Misc commands
  • 3 创建conan软件包
    • 3.1 conan new
    • 3.2 conan create
  • 4 软件包开发流程

1 关于conan

Conan是一个C/C++的依赖管理工具。

1.1 来源

Conan最初是由JFrog公司开发的,该公司在软件仓库管理领域有着丰富的经验。Conan的目标是解决C/C++项目中的依赖管理问题,这在C/C++开发中是一个非常复杂和常见的问题。Conan允许开发者定义、发布、分享和安装C/C++库的依赖关系,使得在不同项目和平台上管理和复用代码变得更加容易。

1.2 作用

Conan的主要作用是管理C/C++项目的依赖关系。以下是Conan的主要功能和作用:

依赖定义:Conan允许开发者在conanfile.py或conanfile.txt中定义项目所需的依赖库,包括库的名称、版本、构建选项等信息。

依赖安装:通过Conan,开发者可以轻松地安装项目所需的依赖库,Conan会自动解析并下载相应的库文件。

跨平台支持:Conan支持多种操作系统和编译器,可以方便地在不同的平台上管理和安装依赖。

包管理和分享:Conan允许开发者将自己的库打包成Conan包并分享到Conan中央仓库或其他仓库,其他开发者可以轻松地安装和使用这些库。

构建和集成:Conan支持自定义构建选项和生成不同格式的构建文件(如CMake、Meson等),以便于与现有的构建系统集成。

版本管理:Conan允许开发者明确指定依赖库的版本,确保项目的稳定性和可复用性。

本地缓存和缓存策略:Conan会缓存下载的依赖库,提高后续的安装速度,并支持自定义的缓存策略。

2 安装conan

2.1 ubuntu

2.1.1 安装python3

sudo apt-get updatesudo apt-get install python3

验证python是否安装成功

$ python3 -V

2.1.2 安装conan

最新的conan是2.x版本的,而我们目前使用的是1.xx的conan。

pip install conan=1.xx

2.2 Windows

2.2.1 安装python3

去python官网下载相对比较新的python3软件,然后双击安装即可。

2.2.2 安装conan

最新的conan是2.x版本的,而我们目前使用的是1.xx的conan。

pip install conan=1.xx

2.3 验证conan是否成功

以Windows为例:

PS C:\Users\test> conan
Consumer commandsinstall    Installs the requirements specified in a recipe (conanfile.py or conanfile.txt).config     Manages Conan configuration.get        Gets a file or list a directory of a given reference or package.info       Gets information about the dependency graph of a recipe.search     Searches package recipes and binaries in the local cache or a remote. Unless aremote is specified only the local cache is searched.
Creator commandsnew        Creates a new package recipe template with a 'conanfile.py' and optionally,'test_package' testing files.create     Builds a binary package for a recipe (conanfile.py).upload     Uploads a recipe and binary packages to a remote.export     Copies the recipe (conanfile.py & associated files) to your local cache.export-pkg Exports a recipe, then creates a package from local source and build folders.test       Tests a package consuming it from a conanfile.py with a test() method.
Package development commandssource     Calls your local conanfile.py 'source()' method.build      Calls your local conanfile.py 'build()' method.package    Calls your local conanfile.py 'package()' method.editable   Manages editable packages (packages that reside in the user workspace, but areconsumed as if they were in the cache).workspace  Manages a workspace (a set of packages consumed from the user workspace thatbelongs to the same project).
Misc commandsprofile    Lists profiles in the '.conan/profiles' folder, or shows profile details.remote     Manages the remote list and the package recipes associated with a remote.user       Authenticates against a remote with user/pass, caching the auth token.imports    Calls your local conanfile.py or conanfile.txt 'imports' method.copy       Copies conan recipes and packages to another user/channel.remove     Removes packages or binaries matching pattern from local cache or remote.alias      Creates and exports an 'alias package recipe'.download   Downloads recipe and binaries to the local cache, without using settings.inspect    Displays conanfile attributes, like name, version, and options. Works locally,in local cache and remote.help       Shows help for a specific command.lock       Generates and manipulates lock files.frogarian  Conan The FrogarianConan commands. Type "conan <command> -h" for help
PS C:\Users\test>

2.4 命令解释

这是Conan包管理器的命令列表及其详细解释:

2.4.1 Consumer commands

这些命令主要用于消费者(即使用Conan来获取和使用依赖项的开发者)。

  • install

描述:安装在 conanfile.py 或 conanfile.txt 中指定的依赖项。
用法:conan install .conan install path/to/conanfile.py

  • config

描述:管理Conan的配置。
用法:conan config get, conan config set, conan config rm 等。

  • get

描述:获取给定引用或包的文件或列出目录。
用法:conan get package/version@user/channel 或 conan get reference

  • info

描述:获取有关依赖图的信息。
用法:conan info . 或 conan info path/to/conanfile.py

  • search

描述:在本地缓存或远程搜索包和二进制包。
用法:conan search package/version@user/channel 或 conan search package

2.4.2 Creator commands

这些命令主要用于创建者(即创建和发布Conan包的开发者)。

  • new

描述:创建一个新的包模板,包括 conanfile.py 和可选的 test_package 测试文件。
用法:conan new Hello/0.1 -t -s(-t 和 -s 是可选参数)

  • create

描述:为一个 conanfile.py 构建二进制包。
用法:conan create . user/channel

  • upload

描述:将包和二进制包上传到远程。
用法:conan upload Hello/0.1@user/channel -r=my_remote

  • export

描述:将包(conanfile.py 和相关文件)复制到本地缓存。
用法:conan export . user/channel

  • export-pkg

描述:导出一个包,然后从本地源代码和构建文件创建一个包。
用法:conan export-pkg . user/channel

  • test

描述:使用 conanfile.py 中的 test() 方法测试一个包。
用法:conan test . user/channel

2.4.3 Package development commands

这些命令主要用于包开发。

  • source

描述:调用你的本地 conanfile.py 的 source() 方法。
用法:conan source .

  • build

描述:调用你的本地 conanfile.py 的 build() 方法。
用法:conan build .

  • package

描述:调用你的本地 conanfile.py 的 package() 方法。
用法:conan package .

  • editable

描述:管理可编辑的包(位于用户工作区的包,但被消费如同它们在缓存中)。
用法:conan editable add . 或 conan editable remove .

  • workspace

描述:管理工作空间(从用户工作空间消费的一组包,属于同一个项目)。
用法:conan workspace install .

2.4.4 Misc commands

其他命令。

  • profile

描述:列出 .conan/profiles 文件夹中的配置文件,或显示配置文件详情。
用法:conan profile list 或 conan profile show default

  • remote

描述:管理远程列表和与远程相关的包配方。
用法:conan remote add my_remote https://my_url 或 conan remote list

  • user

描述:使用用户/密码对远程进行身份验证,缓存认证令牌。
用法:conan user -r=my_remote

  • imports

描述:调用你的本地 conanfile.py 或 conanfile.txt 的 imports 方法。
用法:conan imports .

  • copy

描述:将Conan配方和包复制到另一个用户/频道。
用法:conan copy Hello/0.1@user/channel other_user/other_channel

  • remove

描述:从本地缓存或远程删除与模式匹配的包或二进制文件。
用法:conan remove Hello* -f

  • alias

描述:创建并导出一个“别名包配方”。
用法:conan alias Hello/0.1@user/channel Hello/latest@user/channel

  • download

描述:下载配方和二进制文件到本地缓存,不使用设置。
用法:conan download Hello/0.1@user/channel

  • inspect

描述:显示Conan配方属性,如名称、版本和选项。可以在本地、本地缓存和远程工作。
用法:conan inspect Hello/0.1@user/channel

  • help

描述:显示特定命令的帮助。
用法:conan help install

  • lock

描述:生成和操作锁定文件。
用法:conan lock create conanfile.txt, conan lock build conan.lock

  • frogarian

描述:这似乎是一个特殊的命令

3 创建conan软件包

参考文档位置:Getting started

3.1 conan new

使用 conan new 命令将为我们创建一个 "Hello World "C++ 库示例项目:

$ mkdir hellopkg && cd hellopkg
$ conan new hello/0.1 --template=cmake_lib
File saved: conanfile.py
File saved: CMakeLists.txt
File saved: src/hello.cpp
File saved: src/hello.h
File saved: test_package/conanfile.py
File saved: test_package/CMakeLists.txt
File saved: test_package/src/example.cpp

生成文件的简单介绍:

  • conanfile.py:在根文件夹中有一个 conanfile.py,它是主要的配方文件,负责定义软件包的构建和使用方式。
  • CMakeLists.txt:一个简单的通用 CMakeLists.txt,其中没有任何关于conan的特定内容。
  • src:src 文件夹,其中包含简单的 C++"hello "库。
from conans import ConanFile
from conan.tools.cmake import CMakeToolchain, CMake, cmake_layoutclass HelloConan(ConanFile):name = "hello"version = "0.1"# Binary configurationsettings = "os", "compiler", "build_type", "arch"options = {"shared": [True, False], "fPIC": [True, False]}default_options = {"shared": False, "fPIC": True}# Sources are located in the same place as this recipe, copy them to the recipeexports_sources = "CMakeLists.txt", "src/*"def config_options(self):if self.settings.os == "Windows":del self.options.fPICdef layout(self):cmake_layout(self)def generate(self):tc = CMakeToolchain(self)tc.generate()def build(self):cmake = CMake(self)cmake.configure()cmake.build()def package(self):cmake = CMake(self)cmake.install()def package_info(self):self.cpp_info.libs = ["hello"]

3.2 conan create

$ conan create . demo/testing
...
hello/0.1: Hello World Release!hello/0.1: _M_X64 defined...

验证是否成功构建对应的conan软件包:

$ conan search
Existing package recipes:hello/0.1@demo/testing$ conan search hello/0.1@demo/testing
Existing packages for recipe hello/0.1@demo/testing:Package_ID: 3fb49604f9c2f729b85ba3115852006824e72cab[options]shared: False[settings]arch: x86_64build_type: Release...

conan create 命令接收与 conan install 相同的命令行参数,因此可以向其传递相同的设置和选项。如果我们执行以下命令行,就会为这些配置创建新的软件包二进制文件:

$ conan create . demo/testing -s build_type=Debug
...
hello/0.1: Hello World Debug!$ conan create . demo/testing -o hello:shared=True
...
hello/0.1: Hello World Release!

这些新的软件包二进制文件也将存储在conan缓存中,随时可供这台计算机中的任何项目使用,我们可以通过以下方式查看它们:

$ conan search hello/0.1@demo/testing
Existing packages for recipe hello/0.1@demo/testing:Package_ID: 127af201a4cdf8111e2e08540525c245c9b3b99e[options]shared: True[settings]arch: x86_64build_type: Release...Package_ID: 3fb49604f9c2f729b85ba3115852006824e72cab[options]shared: False[settings]arch: x86_64build_type: Release...Package_ID: d057732059ea44a47760900cb5e4855d2bea8714[options]shared: False[settings]arch: x86_64build_type: Debug...

4 软件包开发流程

相关文章:

简明conan教程

简明conan教程 1 关于conan1.1 来源1.2 作用 2 安装conan2.1 ubuntu2.1.1 安装python32.1.2 安装conan 2.2 Windows2.2.1 安装python32.2.2 安装conan 2.3 验证conan是否成功2.4 命令解释2.4.1 Consumer commands2.4.2 Creator commands2.4.3 Package development commands2.4.…...

LeetCode刷题--- 等差数列划分 II - 子序列

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构 ​​​http://t.csdnimg.cn/hKh2l 前言&#xff1a;这个专栏主要讲述动态规划算…...

kubectl 启用shell自动补全功能

官网手册参考&#xff1a;https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-linux/ 系统&#xff1a;centos7 补全脚本依赖于工具 bash-completion&#xff0c; 所以要先安装它&#xff08;可以用命令 type _init_completion 检查 bash-completion 是否已安装&a…...

极简wordpress网站模板

Pithy设计师wordpress网站模板 精练简洁的wordpress模板&#xff0c;设计师或设计工作室展示型网站模板。 https://www.jianzhanpress.com/?p6329...

【python】(16)python的字典dict按照key或value排序的不同方法

系列文章回顾 【python】(01)初识装饰器Decorator 【python】(02)初识迭代器Iterator 【python】(03)初识生成器Generator 【python】(04)python中实现多任务并发和并行的区别 【python】(05)如何使用python中的logging模块记录日志信息 【python】(06)理解Python中的 lambda 、…...

微服务篇-C 深入理解第一代微服务(SpringCloud)_VI 深入理解Zuul服务网关

原创作者&#xff1a;田超凡&#xff08;程序员田宝宝&#xff09; 版权所有&#xff0c;引用请注明原作者&#xff0c;严禁复制转载 Part 1 理论部分 1 网关类别有哪些&#xff1f; 常见的网关类别有三种&#xff1a;开放API&#xff08;Open API&#xff09;网关、微服务…...

web CSS笔记1

CSS(Cascading Style Sheets) 美化样式 CSS通常称为CSS样式表或层叠样式表&#xff08;级联样式表&#xff09;&#xff0c;主要用于设置HTML页面中的文本内容&#xff08;字体、大小、对齐方式等&#xff09;、图片的外形&#xff08;宽高、边框样式、边距等&#xff09;以及…...

js算法记录

> 更多请前往 https://www.passerma.com/article/86 滑动窗口 1 给定一个矩阵&#xff0c;包含N*M个整数&#xff0c;和一个包含K个整数的数组。现在要求在这个矩阵中找一个宽度最小的子矩阵&#xff0c;要求子矩阵包含数组中所有的整数 function minSubmatrixWidth(mat…...

球面数据的几何深度学习--球形 CNN

目录 一、说明二、球形 CNN概述三、球面数据的对称性四、标准&#xff08;平面&#xff09;CNN的局限性五、卷积并发症六、球面卷积七、球面卷积是不够的 一、说明 球面数据的几何深度学习–球形 CNN。通过对物理世界的平移对称性进行编码&#xff0c;卷积神经网络 &#xff0…...

MySQL学习笔记------SQL(1)

关系型数据库&#xff08;RDBMS&#xff09; 建立在关系模型基础上&#xff0c;由多张相互连接的二维表组成的数据库 特点&#xff1a;使用表储存数据&#xff0c;格式统一&#xff0c;便于维护 使用SQL语言操作&#xff0c;标准统一&#xff0c;使用方便 SQL通用语法 SQL…...

PMP能提前查成绩?还能改分数?别太离谱!

震惊&#xff01;3月10日PMP考试才结束没多久&#xff0c;昨天就有学员收到了查分邮件&#xff0c;寄信人自称自己是内部人员&#xff0c;可以提前查询到成绩并直接修改成绩。 这也太离谱了吧&#xff01;在此&#xff0c;小赛想说&#xff0c;PMP考试是一个公正、严格的考试体…...

【保姆级讲解服务器硬件的基础知识】

服务器硬件基础知识 1. 前言2. 中央处理器&#xff08;CPU&#xff09;3. 内存&#xff08;RAM&#xff09;4. 存储设备5. 主板6. 电源供应单元&#xff08;PSU&#xff09;7. 冷却系统8. 网络连接9. 扩展插槽和端口10. 管理功能 &#x1f308;&#x1f308;&#x1f308;&…...

并查集---力扣547省份的数量

假设&#xff1a;有一群小混混打架&#xff0c;小弟们可能互相不认识&#xff0c;如果要确定他们是一伙的&#xff0c;就需要确定他们的组长是不是一个&#xff0c;但是每个组长的领导可能又不一样&#xff0c;所以要找到最大的那个领导&#xff0c;才能确定是一伙的。 我们先…...

stm32启动文件里面的__main和主函数main()

一、__main和main()之间的关系 先来对stm32启动过程简单学习 启动文件里面的Reset_Handler&#xff1a; 调用过程&#xff1a; stm32在启动后先进入重启中断函数Reset_Handler&#xff0c;其中会先后调用SystemInit和__main函数&#xff0c; __main函数属于c库函数&…...

曲线生成 | 图解Reeds-Shepp曲线生成原理(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 什么是Reeds-Shepp曲线&#xff1f;2 Reeds-Shepp曲线的运动模式3 Reeds-Shepp曲线算法原理3.1 坐标变换3.2 时间翻转(time-flip)3.3 反射变换(reflect)3.4 后向变换(backwards) 4 仿真实现4.1 ROS C实现4.2 Python实现4.3 Matlab实现 0 专栏介绍 &#x1f5…...

深入探讨iOS开发:从创建第一个iOS程序到纯代码实现全面解析

iOS开发作为移动应用开发的重要领域之一&#xff0c;对于开发人员具有重要意义。本文将深入探讨iOS开发的各个方面&#xff0c;从创建第一个iOS程序到纯代码实现iOS开发&#xff0c;带领读者全面了解iOS应用程序的开发流程和技术要点。 &#x1f4f1; 第一个iOS程序 在创建第…...

Python学习之-正则表达式

目录 前言&#xff1a;1.re.serach1.1例子&#xff1a; 2.re.match2.1示例1&#xff1a;2.2 示例2&#xff1a; 3.re.findall3.1 示例 4.re.fullmatch4.1 示例1&#xff1a;4.2 示例2: 5.re.split5.1 示例1:5.2 示例2&#xff1a;5.3 示例3&#xff1a; 6.re.sub6.1 示例&#…...

Godot.NET C# 工程化开发(1):通用Nuget 导入+ 模板文件导出,包含随机数生成,日志管理,数据库连接等功能

文章目录 前言Github项目地址&#xff0c;包含模板文件后期思考补充项目设置编写失误环境visual studio 配置详细的配置看我这篇文章 Nuget 推荐NewtonSoft 成功Bogus 成功Github文档地址随机生成构造器生成构造器接口(推荐) 文件夹设置Nlog 成功&#xff01;Nlog.configNlogHe…...

数据仓库——雪花模式以及层次递归

层次结构 钻取 向下钻取&#xff1a;对某些代表事实的报表中添加维度细节 向上钻取&#xff1a;从某些代表事实的报表中去除维度细节 属性层次 提供了一种自然方法&#xff0c;用于顺序地在不断深入的层次上组织事实。许多维度可以被理解为包含连续主从关系的属性层次。此类…...

Transformer的前世今生 day09(Transformer的框架概述)

前情提要 编码器-解码器结构 如果将一个模型分为两块&#xff1a;编码器和解码器那么编码器-解码器结构为&#xff1a;编码器负责处理输入&#xff0c;解码器负责生成输出流程&#xff1a;我们先将输入送入编码器层&#xff0c;得到一个中间状态state&#xff0c;并送入解码器…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...