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

2.7 Conan简单使用

一、Conan介绍

Conan 2.0 是专为 C 和 C++ 语言设计的 开源、去中心化、跨平台包管理器,旨在帮助开发者创建、共享和管理原生二进制文件。

支持以下特性:

  • 系统: Windows、Linux、macOS、FreeBSD、Solaris
  • 架构: x86、x64、arm、arm64
  • 构建系统: CMake、Visual Studio (MSBuild)、Autotools、Makefiles、Meson、SCons
  • 编译器: gcc、cl.exe、clang、apple-clang、intel
  • 库类型: static、shared
  • 编译类型: Debug、Release

在这里插入图片描述
Conan组成:

  • Conan 客户端:用于管理依赖、拉取或构建二进制包。
  • conan_server:一个轻量级服务器,用于在本地或私有网络中托管 Conan 包。
  • JFrog Artifactory Community:是一个功能强大的包管理服务器,Conan 官方推荐用于托管 Conan 包。
  • ConanCenter:是 Conan 官方维护的中央公共仓库,存储大量开源 C/C++ 库的 Conan 包。

注意:Conan不存储源码,只记录源码下载地址

Conan 文档地址:docs.conan.org.cn

二、Conan安装

2.1 使用 pip 安装(推荐)

通过pip安装,方便安装不同版本Conan和易于升级。

这里使用python的virtualenvs管理虚拟环境,先创建虚拟环境,再在虚拟环境中安装Conan,并将Conan的安装路径添加环境变量中。

安装流程:

  1. 安装Python 3.12(Conan要求Python的版本必须大于等于3.6)

    • Python 下载地址:www.python.org/downloads/windows
    • 注意:修改Python的安装路径为D盘
  2. 安装virtualenvs依赖,使用virtualenvs管理虚拟环境。

    • virtualenvs依赖库的帮助文档:virtualenvwrapper-win
    • 安装virtualenvs:pip install virtualenvwrapper-win
  3. 指定虚拟环境的安装路径(修改WORKON_HOME环境变量)

    • 虚拟环境默认安装路径是:%USERPROFILE%\Envs
    • 新建WORKON_HOME环境变量
      在这里插入图片描述
  4. 创建Conan虚拟环境

    • 创建虚拟环境:mkvirtualenv --python=3.12.11 conan (这里的conan是虚拟环境的名称)
    • 这里指定的Python版本--python=3.12.11必须是系统已安装的。
    • 这是安装后的虚拟环境
      在这里插入图片描述
  5. 在虚拟环境中安装Conan

    • 进入虚拟环境:workon conan (这里的conan是虚拟环境的名称)
    • 安装Conan:pip install conan
  6. 将Conan的scripts添加到系统环境变量中,使在cmd等终端中能直接使用Conan

    • 将虚拟环境的Scripts添加到环境变量中
      在这里插入图片描述
    • 启动cmd,测试Conan是否能使用。
      在这里插入图片描述
  7. 升级Conan (慎用)

    • 进入虚拟环境:workon conan
    • 升级命令:pip install conan --upgrade

2.2 通过exe安装

这种方式不要求安装Python,可以直接安装。

程序下载地址:conan.org.cn/downloads

在这里插入图片描述

三、Conan使用

3.2 小案例

项目结构:

.
├── conanfile.txt    # 记录项目 用到的依赖
├── CMakeLists.txt   # cmake的配置文件
└── src└── main.c       # 源码

conanfile.txt文件内容:

[requires]    # 记录依赖
zlib/1.2.11   # 依赖/版本号[generators]    # 配置生成构建系统文件
CMakeDeps       # 生成Findxxx.cmake 用于查找依赖库
CMakeToolchain  # 生成conan_toolchain.cmake 配置工具链[layout]
cmake_layout  # 标准 CMake 布局

CMakeLists.txt文件内容:

cmake_minimum_required(VERSION 3.15)
project(compressor C)# 包含 Conan 生成的工具链文件
include(${CMAKE_BINARY_DIR}/generators/conan_toolchain.cmake)# 查找依赖库
find_package(ZLIB REQUIRED)  add_executable(${PROJECT_NAME} src/main.c)
target_link_libraries(${PROJECT_NAME} ZLIB::ZLIB)

main.c文件内容:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>#include <zlib.h>int main(void) {char buffer_in [256] = {"Conan is a MIT-licensed, Open Source package"};char buffer_out [256] = {0};z_stream defstream;defstream.zalloc = Z_NULL;defstream.zfree = Z_NULL;defstream.opaque = Z_NULL;defstream.avail_in = (uInt) strlen(buffer_in);defstream.next_in = (Bytef *) buffer_in;defstream.avail_out = (uInt) sizeof(buffer_out);defstream.next_out = (Bytef *) buffer_out;deflateInit(&defstream, Z_BEST_COMPRESSION);deflate(&defstream, Z_FINISH);deflateEnd(&defstream);printf("Uncompressed size is: %lu\n", strlen(buffer_in));printf("Compressed size is: %lu\n", strlen(buffer_out));printf("ZLIB VERSION: %s\n", zlibVersion());return EXIT_SUCCESS;
}

生成Conan的配置文件(记系统、架构、编译器、库类型、编译类型等信息)

conan profile detect --force

生成的默认配置default在:C:\Users\wujh\.conan2\profiles目录下。

C:\Users\wujh>conan profile show
Host profile:
[settings]   # 目标配置
arch=x86_64
build_type=Release
compiler=msvc
compiler.cppstd=14
compiler.runtime=dynamic
compiler.runtime_type=Release
compiler.version=192
os=WindowsBuild profile:
[settings]   # 编译配置
arch=x86_64
build_type=Release
compiler=msvc
compiler.cppstd=14
compiler.runtime=dynamic
compiler.runtime_type=Release
compiler.version=192
os=Windows

安装依赖:

conan install . --build=missing    # 仅构建本地缓存中缺少的包

构建和编译项目:

cd build
cmake ..
cmake --build . --config Release

注意:

  • conan安装依赖时,已生成工具链配置文件conan_toolchain.cmake,且在CMakeLists.txt文件已配置。
  • 所以在配置cmake项目时,可以不用设置-G "Visual Studio 16 2019" -DCMAKE_TOOLCHAIN_FILE="conan_toolchain.cmake"

参考文章:使用 Conan 构建简单的 CMake 项目

3.1 常用命令

  • 搜索本地或远程包:conan search zlib/* -r=conancenter

    • 在线搜索:conancenter
  • 生成Conan的配置文件

    • 生成默认配置文件:conan profile detect --force
    • 指定配置文件名称:conan profile detect --name=mingw64
    • 两种常见的配置文件:
      • 编译器是VS2019的MSVC:
        [settings]
        arch=x86_64
        build_type=Release
        compiler=msvc
        compiler.cppstd=14
        compiler.runtime=dynamic
        compiler.version=192
        os=Windows
        
      • 编译器是MSYS2的MinGW64的GCC:
        [settings]
        os=Windows
        arch=x86_64
        compiler=gcc
        compiler.version=15.1
        compiler.libcxx=libstdc++11
        build_type=Release
        
    • 配置文件关键配置字段说明
      • ​​os​​:操作系统(Windows/Linux/macOS)
      • ​​arch​​:架构(x86_64/armv8)
      • ​​compiler​​:编译器类型(gcc/msvc/clang)
      • ​​compiler.version​​:编译器版本(如 13 对应 GCC 13)
      • ​​compiler.libcxx​​:C++ 标准库(libstdc++11/libc++)
      • ​​build_type​​:构建类型(Release/Debug)
  • 查看Conan的配置文件

    • 查看所有可用的Profile:conan profile list
    • 查看默认配置文件:conan profile show
    • 查看指定配置文件:conan profile show -pr=mingw64
  • 清理缓存

    • 清理所有缓存:conan cache clean "*"
    • 清理指定库的缓存:conan remove ffmpeg/* -c
  • 安装依赖并生成构建系统文件:

    • 使用默认配置构建 conan install . --build=missing
      • --build参数
        • missing 仅编译不存在的包
        • always 强制所有依赖从源码构建(忽略预编译包)
        • never 禁用所有的源码构建,只使用预编译二进制包。
        • [pattern] 通配符,指定报名进行源码构建 如--build=zlib* 仅构建zlib及其依赖。
        • outdated 当二进制包过期时重构
        • cascade 当某个包被构建时,级联构建其所有依赖。
    • 指定编译文件conan install . --build=missing --profile:host=mingw64 --profile:build=mingw64
      • --profile:host=mingw64 指定目标的配置文件
      • -profile:build=mingw64 指定构建的配置文件
    • 安装后的依赖库位置:
      在这里插入图片描述

3.2 conanfile.txt常见参数

(1) [requires] 声明项目的依赖库

[requires]
poco/1.9.4     # 指定使用 POCO 库的 1.9.4 版本。
zlib/1.2.11    # 指定使用 zlib 库的 1.2.11 版本。
boost/[>=1.78.0 <1.80.0] # 支持版本范围控制,指定 Boost 库的版本范围(1.78.0 到 1.79.x)。

(2)[options] 为依赖包指定构建选项

[options]
poco/*:shared=True   # 指定 POCO 库构建为共享库(.dll 或 .so)
zlib/*:shared=False  # 指定 zlib 库构建为静态库(.lib 或 .a)

(3)[generators] 指定 Conan 生成的构建系统集成文件

[generators]
CMakeDeps       # 生成 CMake 所需的依赖信息文件(如 poco-config.cmake)
CMakeToolchain  # 生成 CMake 工具链文件,配置编译器和构建设置

常见生成器

  • CMakeDeps:为 CMake 项目生成依赖配置文件(如 xxx-config.cmake 或 Findxxx.cmake),允许 CMake 通过 find_package() 查找依赖。
  • CMakeToolchain:生成 CMake 工具链文件(conan_toolchain.cmake),用于配置 CMake 的编译器、构建类型和其他构建设置。
  • MSBuildDeps:为 Visual Studio 项目生成 MSBuild 属性文件(.props 文件),将依赖信息集成到 MSBuild 系统中。
  • XcodeDeps:为 Xcode 项目生成依赖配置,集成到 macOS/iOS 的 Xcode 构建系统中。
  • pkg_config:为每个依赖生成 pkg-config 文件(.pc 文件),供支持 pkg-config 的构建系统(如 Autotools、Make)使用。

如何选择生成器

  • CMake项目 推荐使用 CMakeDeps + CMakeToolchain。
  • Visual Studio项目:使用 MSBuildDeps。
  • Xcode项目 XcodeDeps。
  • Linux/Autotools项目:使用 pkg_config。

(4) [layout] 定义项目的目录结构

[layout]
cmake_layout  # 标准 CMake 布局

(5)[tool_requires] 声明构建项目所需的工具依赖

[tool_requires]
cmake/3.24.0  # 指定使用 CMake 3.24.0 作为构建工具。
ninja/1.10.2  # 指定使用 Ninja 1.10.2 作为构建系统。

注意:这些工具只是作为项目构建和编译时使用,在构建和安装这些工具时没有使用。

http://www.xdnf.cn/news/14254.html

相关文章:

  • open GL 和 vulkan
  • Docker容器中运行OpenMPI并行程序, 参数调优
  • 嵌入式学习笔记 - HAL库对外设的封装
  • 【Linux命令】查看内核版本命令
  • C++批量读取指定后缀文件
  • 【C++进阶篇】哈希的应用(位图)
  • 深度解析Vue.js组件开发与实战案例
  • 商用密码基础知识介绍(上)
  • python与java的区别
  • 深入解析ReentrantReadWriteLock读写锁机制
  • 【python深度学习】Day53 对抗生成网络
  • 人工智能学习23-BP-图像编码
  • c++编译第三方项目报错# pragma warning( disable: 4273)
  • HTML5白云飘飘动态效果教程
  • 华为云Flexus+DeepSeek征文 | 基于华为云Dify-LLM应用开发平台构建写作助手
  • 达梦分布式集群DPC_DPC的执行计划新增操作符详解_yxy
  • 区间合并:牛奶
  • 【慢摹】TRL训练器细节详解(SFT/PPO/DPO/GRPO)
  • 自用方案总结
  • 如何在 Elementary OS 上安装 Snap Store
  • Thymeleaf功能标签th:block
  • java面试总结-20250605
  • 5G核心网Non-IP数据报文转发机制:Unstructured会话与协议栈解析
  • 抖音 pc + 翻页
  • C#最佳实践:推荐使用泛型而非装箱、拆箱
  • 60、数据访问-数据库场景的自动配置分析与整合测试
  • c++26新功能—契约编程
  • 单测时如何让 mock 的接口在长链路调用时一直生效
  • 从STM32到NXP:GPIO就像装修房子,多了个“智能开关”
  • 基于 SpringBoot+Servlet+JSP 的医院医保管理系统的设计与实现,论文7000字,可根据实际情况调整