安装使用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
)替代