C/C++ 包管理器 Conan 安装及使用

news2024/9/21 18:36:53

文章目录

  • Github
  • 官网
  • 文档
  • 简介
  • 安装 Conan 包管理器
  • Conan 私有存储库
    • 创建 profile 文件
    • 添加远程存储库
    • 依赖包操作命令
  • Artifactory 私有存储库
    • 下载安装包(推荐)
    • Docker 方式安装
  • Conan 官方示例

在这里插入图片描述

Github

  • https://github.com/conan-io/conan

官网

  • https://conan.io/

文档

  • https://docs.conan.io/2/

简介

Conan 是一个开源的、跨平台的 C/C++ 包管理器,旨在简化和改善 C/C++ 项目中的依赖项管理。它允许开发者定义、跟踪和分发项目所依赖的库和工具,从而简化构建和部署过程。Conan 支持多种构建系统,并能够与不同的构建工具集成。

安装 Conan 包管理器

  • 下载:https://conan.io/downloads
# Mac 环境安装
brew install conan
# Python 方式安装
pip install --upgrade pip
pip install --user conan
pip install conan --upgrade
  • 安装完后需要重启终端,再执行命令
conan -v
conan -h

Conan 私有存储库

  • Conan Server是一款免费的开源服务器,可实现 Conan 远程存储库。
pip install conan-server
  • 启动 conan 存储库
conan_server

在这里插入图片描述

  • 用户目录下生成 .conan_server 目录
cd ~/.conan_server

在这里插入图片描述

注: 配置用户 [users] 及写权限 [write_permissions]

vim ~/.conan_server/server.conf

在这里插入图片描述

创建 profile 文件

# 生成名称为 default 的 profile 文件
conan profile detect
# 强制生成名称为 default 的 profile 文件,会覆盖旧文件
conan profile detect --force
conan profile detect --name <指定名称>

# 查看 profile 文件所在目录
conan profile path <名称>

# 列出所有 profile 文件
conan profile list

添加远程存储库

# 列出所有远程库
conan remote list
# 添加
conan remote add local_conan http://localhost:9300
# 删除
conan remote remove local_conan

在这里插入图片描述

  • 登录 local_conan 存储库
conan remote login local_conan demo -p demo

在这里插入图片描述

依赖包操作命令

  • conan 官方中央仓库
# 搜索 zlib 库
conan search 'zlib*' -r=conancenter
# 下载 zlib/1.3.1 库
conan download 'zlib/1.3.1' -r=conancenter
  • 上传 zlib/1.3.1 到 local_conan 私有存储库
conan upload 'zlib/1.3.1' -r=local_conan

在这里插入图片描述

  • 搜索 local_conan 私有存储库
conan search '*' -r=local_conan

在这里插入图片描述

  • 从 local_conan 私有存储库下载 zlib/1.3.1
conan download 'zlib/1.3.1' -r=local_conan

在这里插入图片描述

  • 删除本地 zlib/1.3.1
conan remove 'zlib/1.3.1' -c

在这里插入图片描述

  • 从 local_conan 私有存储库安装 zlib/1.3.1
conan install --requires='zlib/1.3.1' -r=local_conan
  • 检查本地计算机上的包是否存在
conan list '*'
conan list 'zlib'

在这里插入图片描述

Artifactory 私有存储库

  • 下载:https://conan.io/downloads

下载安装包(推荐)

  • Linux下载(947M):https://releases.jfrog.io/artifactory/artifactory-rpms/jfrog-artifactory-cpp-ce/jfrog-artifactory-cpp-ce-7.63.12.rpm

在这里插入图片描述

Docker 方式安装

docker pull releases-docker.jfrog.io/jfrog/artifactory-cpp-ce:7.63.12
docker run --name artifactory -d -p 8081:8081 -p 8082:8082 releases-docker.jfrog.io/jfrog/artifactory-cpp-ce:7.63.12

Conan 官方示例

git clone https://github.com/conan-io/examples2.git
cd examples2/tutorial/consuming_packages/simple_cmake_project
  • 目录结构
.
├── ci_test_example.sh
├── CMakeLists.txt
├── conanfile.txt
└── src
    └── main.c
  • CMakeLists.txt(CMake 配置文件)
# 指定 CMake 的最低版本要求
# 这里设置 CMake 版本要求为 3.15 或更高
cmake_minimum_required(VERSION 3.15)

# 定义项目名称和语言
# 这里定义了项目名称为 "compressor" 并且使用 C 语言
project(compressor C)

# 查找并引入 ZLIB 库
# REQUIRED 表示如果未找到 ZLIB 库,则 CMake 配置过程会失败
find_package(ZLIB REQUIRED)

# 添加可执行文件
# - ${PROJECT_NAME} 是一个变量,等于项目名称 "compressor"
# - src/main.c 是源文件的位置
add_executable(${PROJECT_NAME} src/main.c)

# 将 ZLIB 库链接到可执行文件
# - ${PROJECT_NAME} 是可执行文件的名称
# - ZLIB::ZLIB 是 CMake 的目标名称,用于链接 ZLIB 库
target_link_libraries(${PROJECT_NAME} ZLIB::ZLIB)
  • conanfile.txt(Conan 配置文件,用于定义项目的依赖项和生成器)
# 依赖列表
[requires]
# 指定项目所需的依赖包及其版本
zlib/1.2.11  # 需要 zlib 库,版本为 1.2.11

# 生成器列表
[generators]
# 使用 CMakeDeps 生成 CMake 的依赖文件
# CMakeDeps 生成用于 CMake 的依赖文件,使 CMake 能够找到并使用 Conan 安装的依赖
CMakeDeps

# 使用 CMakeToolchain 生成 CMake 的工具链文件
# CMakeToolchain 生成用于 CMake 的工具链文件,配置 CMake 项目以使用 Conan 管理的工具链
CMakeToolchain
conan install . --output-folder=build --build=missing
  • ci_test_example.sh
#!/bin/bash

# 如果有任何命令失败,则立即退出
set -e

# 在执行每个命令之前打印命令
set -x

# 获取当前脚本所在的目录
BASEDIR=$(dirname "$0")

# 切换到脚本所在的目录
pushd "$BASEDIR"

# 删除名为 'build' 的目录及其所有内容
rm -rf build

# 使用 Conan 包管理器安装依赖项
# - --output-folder=build 指定安装包的位置
# - --build=missing 会从源代码构建缺失的依赖项
conan install . --output-folder=build --build=missing

# 切换到 'build' 目录,在这里 CMake 会生成构建文件
cd build

# 使用 CMake 配置项目
# - .. 指向上一级目录,即源代码所在的目录
# - -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake 指定 Conan 的工具链文件
# - -DCMAKE_BUILD_TYPE=Release 设置构建类型为 Release
cmake .. -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release

# 构建项目
cmake --build .

# 运行构建生成的可执行文件 'compressor'
./compressor
./ci_test_example.sh

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2079660.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

零代码上手,工厂数据管理从未如此简单

在当今快节奏的工业环境中&#xff0c;工厂管理者们越来越依赖于数据分析来优化生产流程、提高效率和降低成本。然而&#xff0c;传统的数据分析工具往往复杂难用&#xff0c;且动辄需要高昂的费用&#xff0c;这让很多工厂望而却步。不过最近本人发现了一款非常实用的报表工具…

智能废弃瓶子垃圾箱:城市环境的绿色守护者

随着城市化进程的加速&#xff0c;生活垃圾的处理成为城市管理中的一大挑战。智能废弃瓶子垃圾箱的出现&#xff0c;不仅提高了垃圾回收的效率&#xff0c;还促进了资源的循环利用&#xff0c;成为智慧城市建设的重要组成部分。 目录 技术概述 核心功能 应用场景 环境与社会…

Java数据结构栏目总结

目录 数组与稀疏数组 队列&#xff1a;自己用数组模拟Queue 环形队列&#xff0c;取模【取余】实现. 单链表(LinkList) 双向链表&#xff08;Next 、Pre&#xff09; 单向环形链表 线性结构 数组与稀疏数组 稀疏数组&#xff0c;很多0值&#xff0c;可用于压缩 特点&a…

在 AMD GPUs 上进行图分析使用 Gunrock

Graph analytics on AMD GPUs using Gunrock — ROCm Blogs 图和图分析是可以帮助我们理解复杂数据和关系的相关概念。在这种背景下&#xff0c;图是一种数学模型&#xff0c;用于表示实体&#xff08;称为节点或顶点&#xff09;及其连接&#xff08;称为边或链接&#xff09;…

【CTF Web】BUUCTF BUU BRUTE 1 Writeup(弱口令+暴力破解+字典攻击)

BUU BRUTE 1 1 点击启动靶机。 解法 随便输个用户名。 试试 admin。 用 burp 抓包。 生成四位数字的字典。 导入字典到 burp。 添加载荷位置。 开始爆破。破解完成&#xff0c;密码&#xff1a;6490。取得 flag。 注意 如果破解得慢的话&#xff0c;记得要续期靶机。不然靶机…

算法工程师秋招面试问题总结

大模型分布式训练并行 一般有 tensor parallelism、pipeline parallelism、data parallelism 几种并行方式,分别在模型的层内、模型的层间、训练数据三个维度上对 GPU 进行划分。三个并行度乘起来,就是这个训练任务总的 GPU 数量。 1.数据并行 数据并行是最常见的并行形式…

2024.8.27 作业

1> 提示并输入一个字符串&#xff0c;统计该字符串中字母个数、数字个数、空格个数、其他字符的个数 #include <iostream>using namespace std;int main() {string s;cout << "请输入字符串>>>";getline(cin,s);int letter0,digit0,blank0,…

git 复制提交到另外分支上

查看提交id 在原分支上查看要复制的id git log切换目标分支 将刚才复制的id&#xff0c;在这个目标分支上执行复制命令 git cherry-pick <commit-id>其中是要复制的提交的提交ID 效果 新分支上未复制的提交&#xff1a; 新分支上已复制的提交&#xff1a;

PTA - C语言国庆题集2

目录 7-21 打妖怪7-22 统计连续高温的最大天数7-23 唱歌比赛打分7-24 找最长的字符串7-25 算龙脉7-26 DNA鉴定7-28 T9键盘7-31 单链表的创建&#xff0c;遍历与销毁7-36 有多少位是7&#xff1f;7-37 选择排序7-38 翻转单词顺序7-39 求因子和最大的数&#xff08;结构体排序&am…

min(n,k)*min(m,k)

今天看那场一题都没写出来的div12&#xff0c;发现我想了那么久的A题&#xff0c;别人用几行代码就搞出来了。。。&#xff0c;现在感觉这道题和状压dp好像。。。 这道题用到了切比雪夫距离。。。

2024114读书笔记|《漱玉词》—— 绛绡缕薄冰肌莹,雪腻酥香,满院东风,海棠铺绣,梨花飞雪

2024114读书笔记|《漱玉词》—— 绛绡缕薄冰肌莹&#xff0c;雪腻酥香&#xff0c;满院东风&#xff0c;海棠铺绣&#xff0c;梨花飞雪 《漱玉词》李清照&#xff0c;观之入微&#xff0c;是惆怅亦是欢乐&#xff0c;不费力就可以读完的小诗词&#xff0c;插图不错。 知否的主…

Spring理论知识(Ⅱ)——Spring核心容器模块

Spring的组成 Spring由20个核心依赖组成&#xff0c;这20个核心依赖可以分为6个核心模块 本篇文章着重描述Spring核心容器模块&#xff0c;其中包含了spring-beans&#xff0c;spring-core&#xff0c;spring-context&#xff0c;spring-expression-language&#xff08;…

摄像头设备问题如何检测

摄像头等智能设备的在线状态通常被视为其运作正常的表现。但在日常监控使用中&#xff0c;由于使用空间、网络环境、产品年限等原因&#xff0c;设备掉线、视频流无法正常获取、监控画面异常&#xff08;如花屏&#xff09;&#xff0c;以及存储介质&#xff08;如SD卡&#xf…

【Electron】Electron学习笔记

1.什么是 Electron&#xff1f; Electron 是一个跨平台桌面应用开发框架&#xff0c;开发者可以利用 HTML、CSS、JavaScript 等Web技术来构建桌面应用程序。它本质上是结合了 Chromium 和 Node.js&#xff0c;目前广泛用于桌面应用程序开发。例如&#xff0c;许多桌面应用都采…

算法学习-基础算法

基础算法 一.二分查找 1.模版 boolean check(int x) { }int search(int left, int right) {while (left < right) {int mid (left right) >> 1;if (check(mid)) {//满足条件&#xff0c;向寻找范围继续寻找&#xff0c;例如我要找更靠左的&#xff1a;r m right…

一次学校OJ 代码执行测试

前言 以前看过一篇Windows上搭OJ被C#打穿的文章&#xff0c;刚好测测学校的OJ。 这里没有过多的研究其余的可能利用点&#xff0c;仅仅是简单记录下过程&#xff0c;一些思路的启发。 测试过程 首先看支持的代码类型&#xff1a; 尝试了Java发现不能import&#xff0c;那J…

一文带你从零到实战,学会gcc和Makefile,多文件编译神器的使用与编写

目录&#xff1a; 目录&#xff1a; 一、什么是Makefile 1.1 makefile的作用&#xff1a; 1.2 makefile的基本组成&#xff1a; 二、Linux编译过程&#xff1a; 2.1 linux编译过程: 2.1.1 预处理&#xff08;Preprocessing&#xff09; 2.1.2 编译&#xff08;Compilation&am…

# 移动硬盘误操作制作为启动盘数据恢复问题

移动硬盘误操作制作为启动盘数据恢复问题 文章目录 移动硬盘误操作制作为启动盘数据恢复问题步骤一恢复原有数据 步骤二格式化并重新分区 注意注意先找数据恢复软件恢复数据&#xff0c;把之前移动硬盘或者U盘上的数据恢复到其它地址 步骤一 恢复原有数据 使用一些数据恢复软…

SpringBoot实现Word转PDF/TXT

背景 研发工作中难免会遇到一些奇奇怪怪的需求&#xff0c;就比如最近&#xff0c;客户提了个新需求&#xff1a;上传一个WORD文档&#xff0c;要求通过系统把该文档转换成PDF和TXT。客户的需求是没得商量的&#xff0c;必须实现&#xff01;承载着客户的期望&#xff0c;我开始…

培训第三十七天(Dockerfile与registry)

一、使用Dockerfile创建镜像 Dockerfile文件命令介绍&#xff1a; FORM 指定基础镜像为该镜像的最后修改版本 FROM < img:tag >指定基础镜像为该镜像的⼀个tag版本 MAINTAINER 指定镜像创建者&#xff0c;企业内部不⽤指定&#xff0c;对外发布也可以不指定 RUN 运⾏…