[C++]CLion集成vcpkg一键完成包管理——以使用imgui为例
下载并集成vcpkg
首先,请确保 CLion 版本高于 2023.1。
按两下 shift 搜索 vcpkg
,并点击可进入 CLion 对 vcpkg 的支持模块。
如下图:
CLion对vcpkg的操作模块如下:
上图中,由于我已经完成vcpkg的下载与集成,可以看到我已经安装的各种库。
如果你第一次来使用这个功能,那么可能需要点击左上角的四个按钮完成相应操作。
由于你目前还没有创建vcpkg的集成,所以需要先点击那个加号。
会出现下列选项:
上述图片中已经注释的很清楚了。
主要需要配置的是两类:
vcpkg的下载:
- 如果你本地之前没有下载好vcpkg,那么可以填写url来帮你下载和初始化,但是需要注意,下载的文件夹需要是一个不存在的文件夹。
- 如果你本地之前现在过vcpkg,你想要手动指定它,那么只需要在
Directory
中指定已经下载好的vcpkg的目录即可,而上述url将无效。
将vcpkg集成到cmake项目:
这里就比较简单了,点击集成到你目前CLion中已经存在的cmake运行的配置项即可。
有关CLion中cmake的运行配置项是什么,可以查看我B站的视频讲解:https://www.bilibili.com/video/BV18R4y127UV
完成这两步,你的vcpkg算是已经集成到了你的cmake项目。
其他三个按键,比如第二个编辑按键其实就是重新编辑每个集成的 vcpkg
的这几个参数罢了。
引入第三方库
我们已经集成好了vcpkg,那么我们以一个较为复杂的第三方库引入来跑跑看?
就决定是你了 Imgui !
我们直接到目前已经集成的vcpkg中搜索该库:
如上图所示,我们有两种方式去编译安装该库:
- 在项目根目录下提供
vcpkg.json
文件来描述需要依赖的库,在cmake执行后自动下载编译。 - 手动选择需要编译的环境,然后手动点击install来进行安装。
这两种方式在编译安装好后都会提示你如何引入该库,如下图我已经编译安装好imgui了:
你只需要把 main 替换为你的项目 target 即可完成库的引入。
集成cmake运行项目
现在你的项目虽然引入了 imgui ,但是你会发现你还是无法把官方的例子跑起来,因为官方的例子还依赖图形渲染引擎(这方面我也不是很懂)。
这里有作者对不同渲染引擎的例子如何跑起来的描述:https://github.com/ocornut/imgui/blob/c206a193737811193a0b48ef2d35fe028fa0996e/examples/README.txt#L160
介于我本机使用的是win11系统,所以我选择跑的是 example_win32_directx12
这个例子,描述如下:
example_win32_directx12/
DirectX12 example, Windows only.
= main.cpp + imgui_impl_win32.cpp + imgui_impl_dx12.cpp
This is quite long and tedious, because: DirectX12.
依照提示把 example 中的这三个 cpp 源文件以及对应头文件加入编译即可跑通该示例。
对应文件url如下:
-
main.cpp:https://github.com/ocornut/imgui/blob/c206a193737811193a0b48ef2d35fe028fa0996e/examples/example_win32_directx12/main.cpp
-
imgui_impl_win32.cpp:https://github.com/ocornut/imgui/blob/c206a193737811193a0b48ef2d35fe028fa0996e/examples/imgui_impl_win32.cpp
-
imgui_impl_win32.h:https://github.com/ocornut/imgui/blob/c206a193737811193a0b48ef2d35fe028fa0996e/examples/imgui_impl_win32.h
-
imgui_impl_dx12.cpp:https://github.com/ocornut/imgui/blob/c206a193737811193a0b48ef2d35fe028fa0996e/examples/imgui_impl_dx12.cpp
-
imgui_impl_dx12.h:https://github.com/ocornut/imgui/blob/c206a193737811193a0b48ef2d35fe028fa0996e/examples/imgui_impl_dx12.h
如图所示项目目录以及cmake代码如下:
当我们兴高采烈的准备跑起整个示例项目的时候,我们得到了一个长达几十行的符号链接错误。。。
很明显,肯定是有些使用到的库没有链接,进行相关检索以及推理判断,我终于找出还需要链接的两个库:d3d12 dxgi
改为如下cmake,终于成功跑起来了!
cmake_minimum_required(VERSION 3.14)
project(imgui_example)
set(CMAKE_CXX_STANDARD 17)
find_package(imgui CONFIG REQUIRED)
add_executable(imgui_example main.cpp imgui_impl_dx12.cpp imgui_impl_win32.cpp)
target_link_libraries(${PROJECT_NAME} PRIVATE imgui::imgui d3d12 dxgi)
示例跑起来的样子: