1、前言
Conan 是一个开源的 C/C++ 包管理器。C++还有其他的包管理器,如vcpkg等,但是比较下来大家都比较推荐conan多一点。
2.conan2安装
conan是Python开发的,所以可以通过pip来安装
pip install conan
但是为了方便找到conan的路径,个人还是选择通过安装程序安装。安装完成之后通过 conan --version 检查是否安装成功。
输出
Conan version 2.3.1
执行创建默认配置的命令
conan profile detect
否则会出现如下信息。
ERROR: The default build profile 'C:\Users\fengxiaotx.conan2\profiles\default' doesn't exist.
You need to create a default profile (type 'conan profile detect' command)
or specify your own profile with '--profile:build=<myprofile>'
到这里conan2就安装完成了。
3.通过conan命令创建一个conan2的项目
创建文件夹conanexe
mkdir conanexe && cd conanexe
执行创建命令
conan new -d name=foo -d version=1.0 cmake_exe
初始化项目之后,查看CMakeLists.txt中的cmake版本如果低于3.23,则修改为高于3.23的版本
在根目录下执行install 命令,会生成CMakeUserPresets.json文件以及build文件夹
conan install .
CMakeUserPresets.json 其中包含了生成的CMakePresets.json文件路径
{
"version": 4,
"vendor": {
"conan": {}
},
"include": [
"build\\generators\\CMakePresets.json"
]
}
CMakePresets.json 包含配置和构建的相关信息
{
"version": 3,
"vendor": {
"conan": {}
},
"cmakeMinimumRequired": {
"major": 3,
"minor": 15,
"patch": 0
},
"configurePresets": [
{
"name": "conan-default",
"displayName": "'conan-default' config",
"description": "'conan-default' configure using 'Visual Studio 17 2022' generator",
"generator": "Visual Studio 17 2022",
"cacheVariables": {
"CMAKE_POLICY_DEFAULT_CMP0091": "NEW"
},
"toolset": {
"value": "v143",
"strategy": "external"
},
"architecture": {
"value": "x64",
"strategy": "external"
},
"toolchainFile": "generators\\conan_toolchain.cmake",
"binaryDir": "D:\\develop\\workspace\\tmp\\conanexe\\build"
}
],
"buildPresets": [
{
"name": "conan-release",
"configurePreset": "conan-default",
"configuration": "Release",
"jobs": 16
}
],
"testPresets": [
{
"name": "conan-release",
"configurePreset": "conan-default",
"configuration": "Release"
}
]
}
根据内容可以看到这里的 configurePresets 的name是conan-default
执行
cmake --preset conan-default
buildPresets的name是conan-release
cmake --build --preset conan-release
生成目录结构如下
在 build\Release 目录下可以看到foo.exe文件
4. 在一个现成的项目中添加conan配置
这里准备一个新的工程,目录结构如下,主要测试添加boost依赖
conanfile.txt
[requires]
boost/1.85.0
[generators]
CMakeDeps
CMakeToolchain
[layout]
cmake_layout
CMakeLists.txt
cmake_minimum_required(VERSION 3.28)
project(conandemo)
set(CMAKE_CXX_STANDARD 17)
find_package(Boost REQUIRED)
add_executable(conandemo main.cpp)
target_link_libraries(conandemo boost::boost)
main.cpp
#include <iostream>
#include <boost/algorithm/string.hpp>
int main() {
std::string str = "Hello, World!";
boost::algorithm::to_upper(str);
std::cout << str << std::endl; // 输出: HELLO, WORLD!
return 0;
}
执行构建
conan install . --build=missing
cmake --preset conan-default
cmake --build --preset conan-release
执行conandemo.exe 正常输出
5. 在clion中配置conan2
添加插件
配置conan2的路径
配置完后会自动生成CMakeUserPresets.json和conan_provider.cmake
可以看到cmake上添加了conan的参数
-DCMAKE_PROJECT_TOP_LEVEL_INCLUDES="conan_provider.cmake"
-DCONAN_COMMAND="D:\develop\program\Conan\conan\conan.exe"
但是如果想通过插件来添加依赖的话,就不能使用txt的配置,插件会生成conandata.yml 和 conanfile.py配置文件
6. 在visual studio中配置conan
添加插件
配置conan路径
注意:visual stuido下 conan扩展只支持 msbuild项目,cmake的项目并不支持。