【进阶】vscode 中使用 cmake 编译调试 C++ 工程
基于 MSYS2 的 MinGW-w64 GCC
工具链与 CMake 构建系统,结合VSCode及其扩展插件( ms-vscode.cmake-tools
),可实现高效的全流程C++开发调试。既可通过 VSCode 可视化界面(命令面板、状态栏按钮)便捷完成配置、编译与调试,也可借助命令行灵活控制构建过程。通过 VSCode 强大的扩展生态和智能化工具链,可视化交互、智能代码补全和AI代码生成等功能提高开发效率。
本文以第三方库(如spdlog)集成场景为例演示基本功能,通过合理的CMakeLists.txt配置,可支持复杂项目结构调试,支持断点设置与变量监视功能,实现从简单应用到模块化工程的编译调试管理,Linux+Windows 双重本地开发体验。 更多参考 《Windows 中的 Linux GCC开发工具链》 和 《现代 CMake 实战指南:从基础到进阶》
准备
- 安装 MSYS2 GCC 编译工具链
- 安装 VSCode 及 CMake 插件
- 下载 spdlog 到 temp 文件夹
git clone https://github.com/gabime/spdlog.git
目标
- 编译 spdlog 库 并安装到指定路径
- 编译 spdlog 示例
- vscode 中打断点进行可视化调试
- 命令行方式实现
目录结构说明
D:/code/cpp 目录下:
├─.vscode└─settings.json # cmake 配置
├─build # cmake 编译生成的临时文件,可删除
├─temp # 第三方库,如 spdlog 源码
├─dist # 编译 spdlog 后安装路径
└─test # 用于 C++ 练习├─helloworld└─spdlog # spdlog 示例├─CMakeLists.txt└─example # spdlog 示例源码
一、可视化方式
1. 编译 spdlog 库
- 修改
settings.json
指定源码、编译、安装路径。
-
等价于命令行
cmake -SD:/code/cpp/temp/spdlog -BD:/code/cpp/temp/spdlog/build
。 -
通过
cmake.installPrefix
指定安装路径,等价于cmake --install . --prefix D:/code/cpp/dist/spdlog
"cmake.sourceDirectory": "D:/code/cpp/temp/spdlog","cmake.buildDirectory": "D:/code/cpp/temp/spdlog/build","cmake.installPrefix": "D:/code/cpp/dist/spdlog",
重新配置 cmake,清理缓存
配置输出:
- 选择编译类型
--config Release
- 执行编译,默认生成全部目标,可点击编辑按钮修改
- 编译输出
2. 安装 spdlog 到 cmake.installPrefix
设置的路径 dist/spdlog
点击运行任务后的按钮,选择 cmake --> cmake 安装任务,将编译结果放到 dist/spdlog
。
3. 编译 spdlog example.cpp
- 复制
spdlog
根目录下 example 中的文件到test/spdlog
。
- 修改
CMakeLists.txt
, 指定 spdlog 库的安装路径, 让find_package(spdlog REQUIRED)
可以找到其 cmake 依赖:
if(NOT DEFINED CMAKE_PREFIX_PATH)set(CMAKE_PREFIX_PATH "D:/code/cpp/dist" CACHE PATH "默认依赖路径")
endif()
- 修改
settings.json
指定源码路径, 刷新缓存后,点击生成按钮,默认生成到D:/code/cpp/build/
目录:
"cmake.sourceDirectory": "D:/code/cpp/test/spdlog",
生成及调试操作按钮:
4. 可视化调试
- 点击源码行号添加断点
- 点击调试按钮开始调试, 左边可以查看调试信息、右上角有调试控制按钮,终端中可以查看输出。
二、命令行方式
-
打开 MSYS2 Linux 命令行环境:
a.
Ctrl + Shift + P
->Create New Terminal
选择bash(MSYS2)
b. 或点击终端右上角 + , 选择默认配置文件并选择,每次打开默认使用。
-
部分指令没有添加到系统环境变量,需要通过 绝对路径访问,也可修改添加到环境变量。可以参考前面的输出找到具体路径。
-
cmake 命令行编译 spdlog 示例,临时添加的简单第三方库可通过该方式快速编译安装。
export PATH=$PATH:/c/msys64/ucrt64/bin # 临时添加环境变量 gcc
export PATH=$PATH:/f/vs/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/bin # cmake
cd D:/code/cpp/test/spdlog
cmake -S. -B./build -G "MinGW Makefiles"
cmake --build ./build
# cmake --install ./build --prefix /d/code/cpp/dist/test # 支持安装到指定目录
END
如果这篇文章对您有所帮助,欢迎点赞、分享和留言,让更多的人受益。感谢您的细心阅读,如果发现了任何错误或需要补充的地方,请随时告诉我,我会尽快处理 _