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

Conan 包管理工具介绍与使用

文章目录

  • Conan 包管理工具介绍与使用
    • 什么是 Conan?
    • 主要特点
    • 安装 Conan
    • 基本使用
      • 1. 创建新项目
      • 2. 编写 conanfile.py
      • 3. 添加依赖
      • 4. 安装依赖
      • 5. 构建项目
      • 6. 创建包
      • 7. 上传到远程仓库
    • 常用命令
    • 与构建系统集成
      • 与 CMake 集成
    • 高级特性
    • 实际应用示例
    • 总结

Conan 包管理工具介绍与使用

什么是 Conan?

Conan 是一个开源的、跨平台的 C/C++ 包管理器,用于管理 C/C++ 项目的依赖关系。它允许开发者创建、共享和使用二进制包,简化了 C/C++ 项目的依赖管理过程。

主要特点

  • 跨平台支持:Windows、Linux、macOS、FreeBSD 等
  • 多编译器支持:GCC、Clang、Visual Studio 等
  • 二进制包管理:可以预编译依赖项
  • 依赖解析:自动处理依赖关系
  • 远程仓库:支持公共和私有仓库
  • 可配置性:针对不同设置(Debug/Release、架构等)管理不同包

安装 Conan

pip install conan

安装后验证:

conan --version

基本使用

1. 创建新项目

mkdir my_project && cd my_project
conan new hello/0.1 -t

这会创建一个简单的示例项目结构。

2. 编写 conanfile.py

Conan 使用 conanfile.pyconanfile.txt 来定义项目依赖。示例 conanfile.py:

from conans import ConanFileclass HelloConan(ConanFile):name = "hello"version = "0.1"settings = "os", "compiler", "build_type", "arch"generators = "cmake"exports_sources = "src/*"def build(self):cmake = CMake(self)cmake.configure(source_folder="src")cmake.build()def package(self):self.copy("*.h", dst="include", src="src")self.copy("*.lib", dst="lib", keep_path=False)self.copy("*.dll", dst="bin", keep_path=False)self.copy("*.so", dst="lib", keep_path=False)self.copy("*.a", dst="lib", keep_path=False)def package_info(self):self.cpp_info.libs = ["hello"]

3. 添加依赖

conanfile.py 中添加 requires 部分:

requires = "zlib/1.2.11", "boost/1.75.0"

或者使用 conanfile.txt:

[requires]
zlib/1.2.11
boost/1.75.0[generators]
cmake

4. 安装依赖

conan install . -if build -s build_type=Debug --build=missing
  • -if build 指定安装目录
  • -s build_type=Debug 指定构建类型
  • --build=missing 如果二进制不可用则从源码构建

5. 构建项目

conan build . -if build

6. 创建包

conan create . user/channel

7. 上传到远程仓库

conan upload hello/0.1@user/channel -r=my-remote --all

常用命令

命令描述
conan search <package>搜索包
conan install安装依赖
conan info查看依赖信息
conan create创建并测试包
conan upload上传包到远程
conan remote add <name> <url>添加远程仓库
conan profile new <name> --detect创建新配置文件

与构建系统集成

与 CMake 集成

  1. conanfile.txt 中添加 CMake 生成器:
[generators]
cmake
  1. 在 CMakeLists.txt 中包含 Conan 生成的配置文件:
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()
  1. 然后可以像往常一样使用 CMake 构建项目。

高级特性

  1. 选项和默认选项:可以自定义包的构建方式
  2. 交叉编译:支持为不同平台构建
  3. 包修订:跟踪包的更改历史
  4. 锁定文件:确保可重复构建
  5. 工具链集成:支持多种构建系统

实际应用示例

假设我们要创建一个使用 Boost 和 OpenSSL 的项目:

  1. 创建 conanfile.txt:
[requires]
boost/1.75.0
openssl/1.1.1i[generators]
cmake
  1. 安装依赖:
conan install . -if build
  1. 在 CMakeLists.txt 中使用这些依赖:
cmake_minimum_required(VERSION 3.10)
project(MyProject)include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()add_executable(my_app main.cpp)
target_link_libraries(my_app ${CONAN_LIBS})

总结

Conan 为 C/C++ 项目提供了现代化的依赖管理解决方案,解决了传统 C/C++ 开发中依赖管理的痛点。通过合理使用 Conan,可以显著提高项目的可维护性和可移植性,简化团队协作和持续集成流程。

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

相关文章:

  • 下载量飙升153.6%,《Solvely》如何成为出海AI教育应用新晋“黑马“?
  • Windows下安装MySQL5.7安装过程
  • Verilog基础:$timeformat系统任务的使用
  • Linux服务器部署n8n实战教程
  • AWS-EFS
  • 智能安全带:建筑行业安全防护的新利器
  • 黑群晖NAS部署DeepSeek模型与内网穿透实现本地AI服务
  • Linux中升级或者切换python版本
  • 网络上搜集的IFC资源共享(含下载链接)
  • LLM基础7_用于文本分类的微调
  • Cesium1.95中加载模型过多导致内存溢出的解决方案
  • 用户态与内核态是什么?有什么作用?两者在什么时候切换?为什么要切换?
  • 知识变现新趋势:创客匠人解析创始人 IP 打造与行业破局之道
  • SmartGit(图形化GitGUI客户端) v24.1.3
  • Python实现web请求与访问
  • 选品融电商:全域代运营赋能,抖音小红书销量倍增的头部引擎
  • SGDvsAdamW 优化策略详细解释
  • mybatis foreach里用bind、foreach中使用bind的坑、foreach中动态生成表名
  • 预压技术对滚珠螺杆寿命的影响是什么?
  • 预测性去匿名化攻击(PDAA):重塑数据安全攻防边界
  • 说一说Redis中如何使用一致性哈希算法
  • 强化学习:DQN学习总结
  • 野火板子上重装ubuntu20.04系统
  • gbcom线上共享瓦片
  • Kubernetes 从入门到精通-deployment控制器
  • 山东大学 2025 web数据管理期末复习总结
  • Python _Day52|神经网络调参指南
  • WLAN 技术指南:从入门到原理
  • git约定示提交
  • 005__C++类的基本语法