【小沐学C++】C/C++包管理工具Conan使用(C++、Python、CMake、Conan)

文章目录

  • 1、简介
  • 2、Conan下载安装
  • 3、Conan命令
    • 3.1 查看conan版本
    • 3.2 更新conan库
    • 3.3 搜索软件包
    • 3.4 显示conan所有源
    • 3.5 查看软件包
    • 3.6 通过conanfile.txt安装依赖包
  • 结语

在这里插入图片描述

1、简介

Conan是C和C++语言的依赖项和包管理器。它是免费和开源的,适用于所有平台(Windows、Linux、OSX、FreeBSD、Solaris等),可用于开发所有目标,包括嵌入式、移动(iOS、Android)和裸机。它还集成了所有构建系统,如CMake、Visual Studio(MSBuild)、Makefiles、SCons等,包括专有系统。

  • Conan仓库地址
    https://conan.io/center
    在这里插入图片描述

  • Conan源码地址
    https://github.com/conan-io/conan
    在这里插入图片描述

  • Conan帮助文档
    https://docs.conan.io/2/
    在这里插入图片描述

Conan是一个具有客户端-服务器架构的去中心化包管理器。这意味着客户端可以从不同的服务器(“remotes”)获取包,也可以将包上传到不同的服务器,类似于到git remotes的“git”推拉模型。
在这里插入图片描述

2、Conan下载安装

在这里插入图片描述
Conan 基于 Python 编写,在开始前安装好 Python3。然后使用pip 安装即可。

  • 安装库
pip install conan

在这里插入图片描述

3、Conan命令

Conan客户端常用命令如下:

3.1 查看conan版本

conan --version

在这里插入图片描述

3.2 更新conan库

pip install conan --upgrade  

在这里插入图片描述

3.3 搜索软件包

  • (1)搜索poco库
conan search poco --remote=conancenter

在这里插入图片描述

  • (2)搜索opencv库
conan search opencv* -r=conancenter

在这里插入图片描述

  • (3)搜索zlib库
conan search zlib
conan search zlib -r=conancenter
conan search zlib/1.2.1* -r=conancenter
conan search zlib/1.2.1* -r=conancenter --format=json

在这里插入图片描述

  • (4)搜索glut库
conan search *glut

在这里插入图片描述

  • (5)搜索glfw库
conan search glfw

在这里插入图片描述

  • (6)搜索glad库
conan search glad

在这里插入图片描述

  • (7)搜索glew库
conan search glew

在这里插入图片描述

  • (8)搜索glm库
conan search glm

在这里插入图片描述

  • (9)搜索glbinding库
conan search glbing*

在这里插入图片描述

  • (10)搜索sdl库
conan search sdl*

在这里插入图片描述

  • (10)搜索freetype库
conan search freetype*

在这里插入图片描述

  • (11)搜索freeimage库
conan search freeimage*

在这里插入图片描述

  • (12)搜索boost库
conan search boost

在这里插入图片描述

3.4 显示conan所有源

conan remote list

在这里插入图片描述

3.5 查看软件包

conan inspect <包名>/<版本>
conan inspect poco/1.9.4

在这里插入图片描述

3.6 通过conanfile.txt安装依赖包

# 配置仓库,执行该命令会在当前目录生成conan的工程信息
conan install <conanfile.txt所在的目录>

# 编译确实二进制的包
conan install <conanfile.txt所在的目录> --build=missing

# 指定编译器和系统
conan install <conanfile.txt所在的目录> --settings os="Linux" --settings compiler="gcc"

# 指定配置,默认profile=default
conan install <conanfile.txt所在的目录> --profile=gcc_x64

conan install .. -o poco:shared=True -o openssl:shared=True
# or even with wildcards, to apply to many packages
conan install .. -o *:shared=True
conan install conanfile.txt --build=missing

conan install .
  • 以glfw库使用为例,操作步骤如下:

  • 新建conanfile.txt:

[requires]
glfw/3.3.8

[generators]
CMakeDeps
CMakeToolchain
  • 创建默认conan配置
conan profile detect --force

在这里插入图片描述

  • 下载和编译依赖项
conan install . --output-folder=build --build=missing

在这里插入图片描述

  • 在子文件夹src准备测试代码文件main.c
#include <GLFW/glfw3.h>

int main(void)
{
    GLFWwindow* window;

    /* Initialize the library */
    if (!glfwInit())
        return -1;

    /* Create a windowed mode window and its OpenGL context */
    window = glfwCreateWindow(640, 480, "Hello World, 爱看书的小沐", NULL, NULL);
    if (!window)
    {
        glfwTerminate();
        return -1;
    }

    /* Make the window's context current */
    glfwMakeContextCurrent(window);

    /* Loop until the user closes the window */
    while (!glfwWindowShouldClose(window))
    {
        /* Render here */
        glClear(GL_COLOR_BUFFER_BIT);
		glClearColor(0, 0, 1, 1);

        /* Swap front and back buffers */
        glfwSwapBuffers(window);

        /* Poll for and process events */
        glfwPollEvents();
    }

    glfwTerminate();
    return 0;
}
  • 编写构建脚本文件CMakeLists.txt
cmake_minimum_required(VERSION 3.15)

project(glfwTest)
message("${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_BINARY_DIR}")

find_package(GLFW3 REQUIRED)
message("conan libs : ${CONAN_LIBS}")

add_executable(${PROJECT_NAME} src/main.cpp)
# target_link_libraries(${PROJECT_NAME} ${CONAN_LIBS})
target_link_libraries(${PROJECT_NAME} glfw)

在这里插入图片描述

  • 编译测试程序
$ cd build
# assuming Visual Studio 15 2017 is your VS version and that it matches your default profile
$ cmake .. -G "Visual Studio 15 2017" -DCMAKE_TOOLCHAIN_FILE="conan_toolchain.cmake"
$ cmake --build . --config Release

在这里插入图片描述
在这里插入图片描述
运行编译好的程序如下:在这里插入图片描述

结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

知识蒸馏 pytorch官网源码分析

参考连接&#xff1a; Knowledge Distillation Tutorial — PyTorch Tutorials 2.2.1cu121 documentation 方法一 &#xff1a; 知识蒸馏的损失函数只接受两个相同维度的输入&#xff0c;所以我们需要采取措施使他们在进入损失函数之前是相同维度的。我们将使用平均池化…

考研初试没过线怎么办?你还有这些机会!

2024年研考初试成绩已经发布。 研究生考试国家线大概率在下个月公布。 过了国家线的同学可以继续准备复试或者选择调剂。 如果初试失利没过线&#xff0c;也不要急着放弃&#xff01; 我们还有上岸拿硕士学位的机会&#xff01; 考研初试没过线,我们还可以这样入学&#x…

【JavaEE进阶】 Spring AOP详解

文章目录 &#x1f38b;前言&#x1f38d;Spring AOP核心概念&#x1f6a9;切点(Pointcut)&#x1f6a9;连接点(Join Point)&#x1f6a9;通知(Advice)&#x1f6a9;切面(Aspect) &#x1f340;通知类型&#x1f6a9;注意事项 &#x1f332;PointCut&#x1f384;切面优先级Ord…

【JavaEE进阶】 Spring AOP快速上手

文章目录 &#x1f343;什么是AOP&#x1f333;什么是Spring AOP&#x1f334;上手Spring AOP&#x1f6a9;引入依赖&#x1f6a9;编写AOP程序 ⭕总结 &#x1f343;什么是AOP AOP是Aspect Oriented Programming的简称&#xff08;又称为面向切⾯编程&#xff09; 什么是面向…

面试笔记系列四之SpringBoot+SpringCloud+计算机网络基础知识点整理及常见面试题

目录 Spring Boot 什么是 Spring Boot&#xff1f; Spring Boot 有哪些优点&#xff1f; SpringBootApplication注解 Spring Boot 的启动流程 Spring Boot属性加载顺序 springboot自动配置原理是什么&#xff1f;&#xff08;*&#xff09; 如何理解springboot中的start…

ISP代理是什么?跨境账号养号为什么要选择它?

在跨境出海业务中&#xff0c;代理IP对于您的在线任务至关重要&#xff0c;尤其是对于那些运行多个帐户的人来说。为您的帐户选择正确类型的代理对于确保帐户安全非常重要&#xff0c;劣质的IP容易使账号遭受封号风险。IPFoxy的多种代理IP类型应用范围各有侧重&#xff0c;其中…

ICML 2023 | 可证明的动态多模态融合框架论文整理

主要思想 提出一种针对低质量数据的通用的动态多模态融合框架&#xff0c;利用多模态融合得到的泛化误差去动态更新各个单模态预测器, 使得多模态决策倾向于更多地依赖于高质量模态 &#xff0c;而不是其他模态 。通过动态确定每种模态的融合权重来减轻不可靠模态的影响。&…

3月5日济南,2024生物发酵展全新起航!助力打造生物产业经济新时代

生物发酵是生物产业的重要组成部分&#xff0c;近年来&#xff0c;我国生物产业发展迅猛&#xff0c;生物发酵技术也已广泛应用于食品、农业、医药、饲料、日化、材料等领域&#xff0c;市场前景广阔。2022年5月&#xff0c;国家发改委发布的《“十四五”生物经济发展规划》明确…

霍格沃兹遗产显示找不到emp.dll无法继续执行此代码的多种解决方法

在《霍格沃茨&#xff1a;遗产》这款游戏中&#xff0c;如果发现无法找到必要的文件emp.dll&#xff0c;emp.dll作为游戏运行过程中不可或缺的核心组件之一&#xff0c;它的缺失会导致游戏根本无法启动&#xff0c;玩家将无法正常进入并探索这个充满魔法与奇幻色彩的霍格沃茨世…

MySQL(基础篇)——函数、约束

一.函数 1.定义 函数是指一段可以直接被另一段程序调用的程序或代码。 2.字符串函数 常见如下&#xff1a; -- 字符串拼接 SELECT CONCAT(hello,MySql) AS CONCAT -- 将字符串全部转为小写 SELECT LOWER(HEllo MYSql) AS LOWER -- 将字符串全部转为大写 SELECT UPPER(Hello…

(C语言)二分查找

在⼀个升序的数组中查找指定的数字n&#xff0c;很容易想到的⽅法就是遍历数组&#xff0c;但是这种⽅法效率⽐较低。⽐如我买了⼀双鞋&#xff0c;你好奇问我多少钱&#xff0c;我说不超过300元。你还是好奇&#xff0c;你想知道到底多少&#xff0c;我就让你猜&#xff0c;你…

谷歌SEO推广提高网站点击率的10个秘籍-华媒舍

在当今数字化时代&#xff0c;拥有一个高点击率的网站对于企业和个人而言至关重要。通过谷歌SEO推广&#xff0c;可以帮助网站吸引更多的流量&#xff0c;并在搜索引擎结果页面&#xff08;SERP&#xff09;中获得更好的排名。本文将介绍10个谷歌SEO推广的秘籍&#xff0c;帮助…

ubuntu新建ap热点并分享

测试环境ubuntu16,只有一台笔记本电脑&#xff0c;不插网线&#xff0c;无线网卡既连wifi&#xff0c;又作为热点 1.方法1 直接手动新建ap热点 参考https://jingyan.baidu.com/article/ea24bc39b03fc6da62b331f0.html https://jingyan.baidu.com/article/363872ecd8f35d6e4ba…

基于React, Redux实现的俄罗斯方块游戏及源码

分享一个俄罗斯方块游戏游戏框架使用的是 React Redux&#xff0c;其中再加入了 Immutable&#xff0c;用它的实例来做来Redux的state。&#xff08;有关React和Redux的介绍可以看 安装 npm install运行 npm start浏览自动打开 http://127.0.0.1:8080/ 打包编译 npm run …

码住!2024抖音电商爆品攻略,21个行业68个类目一文集齐

小商家&#xff0c;大生意。 2023年&#xff0c;抖音电商高歌猛进&#xff0c;用直播带货创造增量&#xff0c;以商品卡承接用户资产&#xff0c;跑出2万亿市场&#xff0c;带动万千品牌实现二次增长&#xff0c;无数中小商家随奔腾浪潮涌出&#xff0c;从无名到争先&#xff…

【element-ui】el-select multiple多选,表单校验问题解决方法

在项目开发过程中发现&#xff0c;el-select设置了multiple支持多选属性之后&#xff0c;el-select赋值之后&#xff0c;表单校验不通过 解决思路及解决方法&#xff1a; 1、首先看看v-model 、prop属性、rules校验是否正确&#xff0c;这里注意el-select的rules校验的trigger…

C++ 反向迭代器的设计与实现

在本文开始之前&#xff0c;先明晰几个 关键词 的含义&#xff08;T : 模板参数&#xff09;&#xff1a; Ref : T& / const T&Ptr : T* / const T* 一、反向迭代器设计的上帝视角 我们希望将 反向迭代器 设计成一种适配器——传 list::iterator 得到 list 的反向迭代…

前端AR图像增强 + 图像追踪 + 模型渲染

文章目录 背景介绍技术介绍准备目标图片准备3D模型整合到一起演示代码地址背景介绍 本文实现web端html实现AR识别功能 在日常生活中常常看到AR虚拟现实相结合的案例 如下图的效果匹配到目标图片后展示3D模型 从而提高真实度 AR识别 技术介绍 想要达到效果有以下几步是必须的 准…

稀疏卷积Sparse Convolution

1. 为什么提出稀疏卷积&#xff1f;它有什么好处&#xff1f; 卷积神经网络已经被证明对于二维图像信号处理是非常有效的。然而&#xff0c;对于三维点云信号&#xff0c;额外的维度显著增加了计算量。 另一方面&#xff0c;与普通图像每个像素都有值不同的是&#xff0c;一般…

android开发书籍推荐,android面试复习

笼统来说&#xff0c;中年程序员容易被淘汰的原因其实不外乎三点。 1、输出能力已到顶点。这个人奋斗十来年了&#xff0c;依旧碌碌无为&#xff0c;很明显这人的天花板就这样了&#xff0c;说白了&#xff0c;天赋就这样。 2、适应能力越来越差。年纪大&#xff0c;有家庭&…