超级简单的 STM32 + VSCode + clangd + Makefile/CMake 开发

网上有很多使用微软官方的 C/C++(ms-vscode.cpptools)的教程,但是众所周知,cpptools 的性能十分堪忧,且配置麻烦。STM32CubeMX 在 v6.11.0 更新了 CMake 的支持。借此机会写一篇 VSCode + clangd + Makefile/CMake 的教程

准备工作

如果只是正常学习 C/C++ 语言,LLVM 需要搭配 Visual Studio 生成工具才能正常使用。
CMake 依赖于 Make 或 Ninja。二选一即可。
以上工具均可使用 Scoop 包管理器安装。

VSCode 插件

格式:<名称>: <插件 ID>
安装 CMake Tools 时会自动安装 twxs.Cmake

设置调整

clangd 需要通过 compile_commands.json 来定位头文件,定义等内容,所以我们需要将 Cmake: Copy Compile Commandscmake.copyCompileCommands)和 Makefile: Compile Commands Pathmakefile.compileCommandsPath)设置为 ${workspaceFolder}/compile_commands.json 即可正常读取头文件。

如果需要使用标准库,则需要为 clangd 添加一个参数,即为 Clangd: Argumentsclangd.arguments)添加 --query-driver=X:/路径/到/你的/arm-none-eabi-gcc.exe 即可正常读取标准库头文件。

实际上使用 GNU Arm 编译工具的标准库头文件可能会出现一些问题。比如说 printf 无法正常打印之类的。具体原因不明。

关于刷写

编者暂时未能在 Cortex-Debug: marus25.cortex-debug 中找到最方便的刷写方案。欢迎自行研究

完成

至此整个配置就已经完成了。如果想要使用 Makefile 编译,则前去左侧边栏进入 Makefike 选项卡,在选项卡顶部点击生成文件即可。如果想要使用 CMake 编译,则直接在底部状态栏或窗口右上角点击编译文件即可。

Licensed under CC BY-NC-SA 4.0