【Windows 开发环境配置——C++ 篇】VSCode+MSVC/MinGW/Clangd/LLDB+Xmake
环境安装
Microsoft Visual Studio
这里以Visual Studio 2022为例,在Visual Studio 2022 版本发行说明 | Microsoft Learn选择所要下载的版本。
设置好安装位置后,仅需勾选使用C++的桌面开发即可,然后点击安装即可。
MinGW-w64
通常情况下,如果已经安装了Microsoft Visual Studio,那么可能不需要额外安装MinGW-w64。然而,博主需要使用LLVM中的Clangd和LLDB,以获取更强大的代码提示和调试功能。同时,通过XMake下载的一些包可能依赖于Microsoft Visual Studio,因此确保两者同时存在是为了满足项目的构建和依赖要求。
在WinLibs官网的Release versions下载最新的UCRT runtime带POSIX + LLVM/Clang/LLD/LLDB的版本。
下载并解压完成后,请确保将mingw32/bin
或mingw64/bin
文件夹添加到系统的PATH
环境变量中,并且路径中不包含任何空格。
在终端输入分别输入clangd --version
和lldb --version
出现下图内容,代表安装成功。
XMake
在Releases下载最新版本的xmake-master.win64.exe
。选择好安装路径后,其他按照默认要求进行安装。
安装完成后,在终端输入xmake -version
出现下图内容代表安装成功。
环境配置
XMake 配置
更改全局配置文件根目录
默认情况下,XMake的全局配置的存储目录在C:\Users\user_name\.xmake
。这里存储着全局配置文件,依赖包的安装、缓存等其他全局文件,默认都会存储在这个目录下。
通过在系统的PATH环境变量中添加XMAKE_GLOBALDIR可更改全局配置文件根目录,下图将XMAKE_GLOBALDIR设置为XMake的安装位置,则在安装位置下会创建.xmake
文件夹,其中.xmake\cache
为依赖包的下载缓存,.xmake\packages
为依赖包的安装位置。
设置代理
使用xmake-repo
下载包时可能会很慢,可以让XMake直接走代理。
$ xmake g --proxy="socks5://127.0.0.1:1086"
$ xmake g --help
-x PROXY, --proxy=PROXY Use proxy on given port. [PROTOCOL://]HOST[:PORT]
e.g.
- xmake g --proxy='http://host:port'
- xmake g --proxy='https://host:port'
- xmake g --proxy='socks5://host:port'
VSCode 配置
插件安装
- XMake - Visual Studio Marketplace
- clangd - Visual Studio Marketplace
- CodeLLDB - Visual Studio Marketplace
插件配置
{
// xmake
"xmake.buildDirectory": "${workspaceRoot}/build",
"xmake.debugConfigType": "codelldb",
// clangd
"clangd.checkUpdates": false,
"clangd.arguments": [
// 让 Clangd 生成更详细的日志
"--log=verbose",
// 输出的 JSON 文件更美观
"--pretty",
// 全局补全
"--all-scopes-completion",
// 建议风格:打包(重载函数只会给出一个建议)
// 相反可以设置为detailed
"--completion-style=bundled",
// 跨文件重命名变量
"--cross-file-rename",
// 允许补充头文件
"--header-insertion=iwyu",
// 输入建议中,已包含头文件的项与还未包含头文件的项会以圆点加以区分
"--header-insertion-decorators",
// 在后台自动分析文件(基于 complie_commands,我们用CMake生成)
"--background-index",
// 启用 Clang-Tidy 以提供「静态检查」
"--clang-tidy",
// Clang-Tidy 静态检查的参数,指出按照哪些规则进行静态检查
// 参数后部分的*表示通配符
// 在参数前加入-,如-modernize-use-trailing-return-type,将会禁用某一规则
"--clang-tidy-checks=cppcoreguidelines-*,performance-*,bugprone-*,portability-*,modernize-*,google-*",
// 默认格式化风格: 谷歌开源项目代码指南
// "--fallback-style=file",
// 同时开启的任务数量
"-j=2",
// pch优化的位置(memory 或 disk,选择memory会增加内存开销,但会提升性能) 推荐在板子上使用disk
"--pch-storage=disk",
// 启用这项时,补全函数时,将会给参数提供占位符,键入后按 Tab 可以切换到下一占位符,乃至函数末
// 我选择禁用
"--function-arg-placeholders=false",
// compelie_commands.json 文件的目录位置
"--compile-commands-dir=.vscode",
"--enable-config",
"--fallback-style=Google",
"--pch-storage=memory",
"--ranking-model=heuristics",
],
"clangd.onConfigChanged": "ignore",
"[cpp]": {
"editor.defaultFormatter": "llvm-vs-code-extensions.vscode-clangd"
},
// lldb
"lldb.showDisassembly": "never",
"lldb.verboseLogging": true,
}