前言
在开发跨平台工程时为了减少库的依赖关系增加的使用成本,让开发者有更多的时间关注C/C++功能的开发,所以需要一个跨平台的方案来构建CMake工程。
本文环境
- 64位 Windows11
- CLion 2024.1.1
- Visual Studio 17 2022
- Conan 2.3.0
一、开发环境的安装
1、使用Python3执行命令
pip install conan==2.3.0(你也可不加版本号安装最新版本)
来安装本文教程的对应版本Conan。
2、安装CLion中的Conan插件
从CLion的插件市场搜索“Conan”安装Conan插件。
二、构建CMake工程调试
在当前教程以cJson库的应用为例子。
1、创建CMake工程
新建个文件夹MyProject
在文件夹下新建 main.cpp 源码文件
#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;
}
再创建CMakeLists.txt并在其引入main.cpp使用到的cJson库
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)
2、使用CLion打开MyProject工程文件夹
如图所示
点击确定后当前工程是无法构建成功的。
然后在左下角找到Conan插件图标打开,或者通过通过View->Tool Windows->Conan 来打开,
把刚刚安装的conan.exe路径配置一下(如:D:\Program Files\python3\Scripts\conan.exe或者勾选"Use Conan installed in the system")
搜索框输入cj
点击 Use in project后会生成conandata.yml和conanfile.py以及conan_provider.cmake文件。
然后在CMake插件图标下点击 重新加载 CMake后会同步配置成功。
在工程配置文件中可以看到,它自动添加了-DCMAKE_PROJECT_TOP_LEVEL_INCLUDES="conan_provider.cmake"到CMake选项中。
当前默认是Debug,你可新建Release配置,并且把上述conan_provider.cmake添加到CMake选项中即可。
到这里你就可以像以前一样编译调试代码了。
三、Conan的常用操作
新建conanfile.txt文件
[requires]
cjson/1.7.18
[generators]
CMakeDeps
CMakeToolchain
查询包
conan search cjson
下载和编译依赖库
conan install . --output-folder=build --build=missing
列出配方包
conan list cjson
删除本地所有包
conan remove *
列出本地profile
conan profile list
四、用源码创建自己的Conan包
这里依然拿cjson的源码来做创建包。
git clone https://github.com/DaveGamble/cJSON.git
创建myjson(Conan packages必须是全部小写字母)目录并进入,在当前目录打开终端:
conan new cmake_lib -d name=myjson -d version=1.0
将会自动生成一个最简单的CMake工程,然后执行下面命令生成包
conan create .
参考文章:
如何使用 CLion 解决 7 大主要 C++ 痛点 | The CLion Blog (jetbrains.com)