CLion¶
介绍¶
JetBrains Marketplace 上有一个与 CLion 2022.3 及更高版本兼容的插件可用。使用此插件,您可以浏览 Conan Center 中可用的 Conan 包,将它们添加到您的项目中,并直接从 CLion IDE 界面安装它们。
此插件利用 cmake-conan,这是一个用于 Conan 的 CMake 依赖提供程序。它使用 conan_provider.cmake 通过 CMAKE_PROJECT_TOP_LEVEL_INCLUDES 定义进行注入。此依赖提供程序将 CMake 配置转换为 Conan。例如,如果您在 CLion 中选择 Debug 配置,Conan 将安装并使用 Debug 对应的包。
请记住,cmake-conan 每次 CMake 调用 find_package() 时都会激活 Conan 集成。这意味着在 CMake 配置步骤运行之前,不会安装任何库。 此时,Conan 将尝试安装所需的库并在必要时构建它们。
另外,请注意依赖提供程序是 CMake 中的一项相对较新的功能。因此,您需要 CMake 版本 >= 3.24 和 Conan >= 2.0.5。
安装插件¶
要安装新的 Conan CLion 插件,请导航到 JetBrains marketplace。打开 CLion,转到 设置 > 插件,然后选择 Marketplace 选项卡。搜索 Conan 插件,然后单击“安装”按钮。

重新启动 CLion 后,IDE 底部会出现一个新的“Conan”工具选项卡。
配置插件¶
在 CLion 中打开 CMake 项目或创建一个新项目。然后,转到 IDE 底部的“Conan”工具选项卡。插件工具栏中唯一启用的操作是带有“轮子”(配置)符号的操作。单击它。

首先要做的是配置将要使用的 Conan 客户端可执行文件。您可以指向系统上任意位置的特定安装,或者可以选择“使用系统安装的 Conan”来使用系统级别的安装。

有几个选项标记为默认值。让我们回顾一下它们
您将看到复选框,指示 Conan 应该管理哪些配置。在我们的例子中,由于我们只有 Debug 配置,因此它是唯一被选中的配置。 在此之下,“自动为所有配置添加 Conan 支持”默认情况下被选中。这意味着您不需要手动将 Conan 支持添加到新的构建配置;插件会自动执行此操作。
还有一个复选框允许 Conan 修改默认的 CLion 设置,并以顺序方式运行 CMake,而不是并行方式。这是因为 Conan 2 中的 Conan 缓存尚未并发。
如果您正在使用 Conan 插件,通常不会取消选中这些选项。设置完首选项后,单击“确定”按钮以完成配置。
注意:此时,CLion 将自动运行 CMake 的配置步骤。由于插件设置了 conan.cmake 依赖提供程序,CMake 输出中将出现警告。 此警告表明我们尚未在 CMakeLists.txt 中添加 find_package()。 一旦我们在 CMakeLists.txt 文件中添加必要的 find_package() 调用,此警告将消失。
初始配置完成后,您会注意到库列表已启用。“更新”和“检查”按钮也处于活动状态。我们稍后会详细解释这些按钮。
使用插件¶
配置好插件后,您可以浏览可用的库并从 CLion 安装它们。例如,如果您想使用 libcurl 从 Internet 下载图像,请导航到库列表并搜索 libcurl。将显示有关如何将其添加到 CMake 的信息,以及一个“在项目中用”按钮。选择您想要的版本并单击该按钮。

如果您单击“眼睛”(检查)图标,您将看到添加到项目中的所有库(假设您添加了多个库)。此视图包括 CMake 的基本目标信息以及将它们集成到 CMake 中的必要代码片段。

Conan 将有关所用包的信息存储在项目文件夹中的 conandata.yml 文件中。此文件由 conanfile.py 读取,conanfile.py 也会在此过程中创建。您可以自定义这些文件以进行高级插件用法,但请确保阅读相应文件中的信息以正确执行此操作。根据说明修改您的 CMakeLists.txt,它应该如下所示
cmake_minimum_required(VERSION 3.15) project(project_name) set(CMAKE_CXX_STANDARD 17)
find_package(CURL) add_executable(project_name main.cpp)
target_link_libraries(project_name CURL::libcurl)
重新加载 CMake 项目后,您应该看到 Conan 在 CMake 输出选项卡中安装库。
另请参阅
有关更多详细信息,请查看 Conan 博客中关于该插件的文章。