文章目录
- 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