文章
问答
冒泡
CLion集成包管理工具-conan

前言

Conan是一款免费开源且去中心化的C/C++包管理工具,适用于所有平台(Windows,Linux,OSX,FreeBSD,Solaris等)。对于熟悉python的朋友来说,conan类似于anaconda。

Conan官网

https://conan.io/

本文环境

  • 64位 Windows11
  • CLion 2023.3.1
  • Visual Studio 16 2019

安装Conan

https://conan.io/downloads

可以通过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;
}

运行成功

c
c++
conan

关于作者

TimothyC
天不造人上之人,亦不造人下之人
获得点赞
文章被阅读