0%
Skip to content

安装使用Conan包管理器

  • vscode
  • 推荐msvc
  • 推荐conanfile.py

Conan是跨平台的,下方操作都一样,无法下载库请检查命令或使用"梯子"

安装conan

会默认添加远程仓库conancenter,下载的是最新版,当前是2.x.x

bash
# 安装
pip install conan -i https://pypi.tuna.tsinghua.edu.cn/simple

# 查看版本
conan --version

# 根据系统编译环境自动生成配置(我是msvc)
conan profile detect --force

# 查看默认配置
conan profile show --profile=default

# 查看远程(默认有一个名为conancenterd的仓库)
conan remote list

# 远程仓库(官网最新描述仓库地址有更新,可选择更新)
conan remote update conancenter --url https://center2.conan.io

使用

创建conanfile.py

  • 添加你所需的依赖和版本。
  • 这里当前需要一个库spdlog(C++日志库)

可以命令行提前搜索,如spdlog库(替换相应的库名称和远程仓库名称即可),conan search spdlog -r=conancenter

python
from conan import ConanFile
from conan.tools.cmake import cmake_layout

class CompressorRecipe(ConanFile):
    settings = "os", "compiler", "build_type", "arch"
    generators = "CMakeToolchain", "CMakeDeps"

    def requirements(self):
        # 定义一个方法,用于指定项目所需的依赖项
        self.requires("spdlog/1.11.0")
        # 可以继续添加其他依赖 self.requires("other_dependency/version")
        
    def layout(self):  
        cmake_layout(self)

CMakeUserPresets.json

  • CMakeUserPresets.json文件用于生成CMakePresets.json,这是CMake编译配置文件
  • 命令行执行conan install . -s build_type=Debug --build=missing
    • 生成CMakeUserPresets.json
    • 安装相关库
json
{
    "version": 4,
    "vendor": {
        "conan": {}
    },
    "include": [
        "build\\generators\\CMakePresets.json"
    ]
}

CMakeLists.txt

cmake
cmake_minimum_required(VERSION 3.10)

# 设置项目名称
project(MyProject CXX)

# 设置 CXX 标准
set(CMAKE_CXX_STANDARD 11)

# 查找spdlog库
find_package(spdlog REQUIRED)

# 添加头文件路径
include_directories(CMAKE_SOURCE_DIR/header)

# 添加源文件路径
file(GLOB SRC_FILES "CMAKE_SOURCE_DIR/src/*.cpp")

# 生成可执行文件
add_executable(my_project SRC_FILES)

# 链接spdlog库
target_link_libraries(my_project spdlog::spdlog)

Code

main.cpp

cpp
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#include <spdlog/spdlog.h>
#include "hello.h"

int main()
{

    spdlog::info("应用启动");
    spdlog::info("调用hello.h中的printHello()");
    printHello();
    spdlog::info("调用printHello()结束");
    spdlog::info("程序结束");

    return 0;
}

测试

  • 命令行执行conan install . -s build_type=Debug --build=missing
  • cmake 编译运行【使用插件】

插件补充

第一步的conan命令也可以用插件(conan tools)替代