前言
Conan是一款免费开源且去中心化的C/C++包管理工具,适用于所有平台(Windows,Linux,OSX,FreeBSD,Solaris等)。对于熟悉python的朋友来说,conan类似于anaconda。
Conan官网
本文环境
- 64位 Windows11
- CLion 2023.3.1
- Visual Studio 16 2019
安装Conan
可以通过pip install conan,我是通过安装器安装的
安装完后配置环境变量,查看版本号检测是否安装成功
>conan --version
Conan version 2.0.14
CLion集成
从插件市场直接安装Conan
然后在左下角找到图标打开,或者通过通过View->Tool Windows->Conan 来打开
把刚刚安装的conan.exe路径配置一下
这个时候CLion会卡顿一会,然后你的项目里面会生成一个conan_provider.cmake的文件
如果没有生成,那需要你点击设置图标边上的刷新按钮(ps:可能要多试几次,不行就重开CLion)
使用案例
通过安装的cJson为例子,在搜索框直接搜索,然后点击 Use in project
这个时候你的项目里会多出conandata.yml和conanfile.py两个文件,类似于python的requirements.txt
然后正常情况会自动reload cmake来下载包,但是conan的包很容易下载失败
类似报错:HTTPSConnectionPool(host='github.com', port=443)
然后我就开着全局代理,一开代理连不上conan的中央仓库,因为每次下载包都会校验md5值
网上找了很多有说证书过期的,有说版本太低的,但是都不适合我,最后我仔细阅读了conan_provider.cmake文件后,想到了在cmake中使用代理,并且只有在conan install之前使用代理,去中央仓库校验的时候不走代理
这个时候我们要在conan_provider.cmake中找的conan_install的地方,使用代理
加入之后我们重新reload cmake正常都能把包下载下来
然后在CMakeLists.txt中引入一下
cmake_minimum_required(VERSION 3.27)
project(cjson_demo_conan)
set(CMAKE_CXX_STANDARD 17)
find_package(cJSON REQUIRED)
add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} cjson::cjson)
随便找的demo
#include "cjson/cJSON.h"
#include <cstdlib>
#include <cstdio>
int main() {
char versionBuf[32];
snprintf(versionBuf, sizeof(versionBuf), "%d.%d.%d", CJSON_VERSION_MAJOR, CJSON_VERSION_MINOR, CJSON_VERSION_PATCH);
cJSON *versionJson = cJSON_CreateString(versionBuf);
cJSON *rootJson = cJSON_CreateObject();
cJSON_AddItemToObject(rootJson, "version", versionJson);
char *jsonStr = cJSON_Print(rootJson);
printf("%s\n", jsonStr);
free(jsonStr);
cJSON_Delete(rootJson);
return 0;
}
运行成功