【小沐学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_x64conan 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=missingconan 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???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JSP实现数据传递与保存(二)

一、session对象 session机制是一种服务器端的机制&#xff0c;在服务器端保存信息用于存储与用户相关的会话信息 1.1 session与窗口的关系 每个session对象都与一个浏览器窗口对应&#xff0c;重新开启一个浏览器窗口&#xff0c;可以重新创建一个session对象&#xff08;不…

09 Redis之分布式系统(数据分区算法 + 系统搭建与集群操作)

6 分布式系统 Redis 分布式系统&#xff0c;官方称为 Redis Cluster&#xff0c;Redis 集群&#xff0c;其是 Redis 3.0 开始推出的分布式解决方案。其可以很好地解决不同 Redis 节点存放不同数据&#xff0c;并将用户请求方便地路由到不同 Redis 的问题。 什么是分布式系统?…

49.仿简道云公式函数实战-文本函数-Ip

1. Ip函数 获取当前用户的ip地址 注意是Ipv4的地址 2. 函数用法 IP() 3. 函数示例 获取当前用户的ip地址IP() 4. 代码实战 首先我们在function包下创建text包&#xff0c;在text包下创建IpFunction类&#xff0c;代码如下&#xff1a; package com.ql.util.express.sel…

MySQL-约束,子查询,常用函数

1.SQL 1.1 SQL 介绍 SQl&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;是一种用于管理关系型数据库系统的标准化语言。它是一种专门用于执行各种操作的语言&#xff0c;包括查询数据、插入、更新、删除数据以及定义和管理数据库模式&#xff0…

TABR: TABULAR DEEP LEARNING MEETS NEAREST NEIGHBORS IN 2023 阅读笔记

TABR: TABULAR DEEP LEARNING MEETS NEAREST NEIGHBORS IN 2023 论文地址&#xff1a;https://arxiv.org/abs/2307.14338 源代码&#xff1a;https://github.com/yandex-research/tabular-dl-tabr 摘要 针对表格数据问题&#xff08;例如分类、回归&#xff09;的深度学习&a…

《高质量的C/C++编程规范》学习

目录 一、编程规范基础知识 1、头文件 2、程序的板式风格 3、命名规则 二、表达式和基本语句 1、运算符的优先级 2、复合表达式 3、if语句 4、循环语句的效率 5、for循环语句 6、switch语句 三、常量 1、#define和const比较 2、常量定义规则 四、函数设计 1、参…

备战蓝桥杯---基础算法刷题2

题目有一点水&#xff0c;不过还是有几个好题的&#xff0c;我在这分享一下&#xff1a; 很容易想到先往最高处跳再往最低处跳&#xff0c;依次类推&#xff0c;那怎么保证其正确性呢&#xff1f; 证法1. 在此&#xff0c;我们从0开始&#xff0c;假设可以跳到a,b,c(a<b<…

【开源项目】超经典实景三维数字孪生城市CIM/BIM公共安全案例

飞渡科技数字孪生城市安全监管平台&#xff0c;基于数字孪生、云计算、遥感技术、数字成像等高度智能化技术&#xff0c;整合城市安全概况、安全生产和联动指挥三大模块。平台全面监测城市安全数据&#xff0c;迅速响应紧急事件&#xff0c;以“数智化”构建城市新安全格局。 通…

2024年2月16日优雅草蜻蜓API大数据服务中心v1.1.1大更新-UI全新大改版采用最新设计ui·增加心率计算器·退休储蓄计算·贷款还款计算器等数接口

2024年2月16日优雅草蜻蜓API大数据服务中心v1.1.1大更新-UI全新大改版采用最新设计ui增加心率计算器退休储蓄计算贷款还款计算器等数接口 更新日志 前言&#xff1a;本次更新中途跨越了很多个版本&#xff0c;其次本次ui大改版-同步实时发布教程《带9.7k预算的实战项目layuiph…

力扣--动态规划1027.最长等差数列

思路分析&#xff1a; 使用动态规划的思想&#xff0c;定义二维数组dp&#xff0c;其中dp[i][j]表示以nums[i]为结尾&#xff0c;公差为(j-1000)的等差数列长度。为了适应负数的情况&#xff0c;将公差的范围设为[-1000, 1000]&#xff0c;并且加上1000作为数组索引。 初始化r…

用于模拟颗粒流的直接强迫浸没边界法 An immersed boundary method with direct forcing 笔记

原文&#xff1a;Uhlmann, Markus. “An immersed boundary method with direct forcing for the simulation of particulate flows.” Journal of computational physics 209.2 (2005): 448-476. 目录 概述引言问题表述固体对流体的作用欧拉和拉格朗日变量的空间离散体积力的表…

音视频数字化(数字与模拟-电视)

上一篇文章【音视频数字化(数字与模拟-音频广播)】谈了音频的广播,这次我们聊电视系统,这是音频+视频的采集、传输、接收系统,相对比较复杂。 音频系统的广播是将声音转为电信号,再调制后发射出去,利用“共振”原理,收音机接收后解调,将音频信号还原再推动扬声器,我…