【Windows 开发环境配置——C++ 篇】VSCode+MSVC/MinGW/Clangd/LLDB+Xmake

环境安装

Microsoft Visual Studio

这里以Visual Studio 2022为例,在Visual Studio 2022 版本发行说明 | Microsoft Learn选择所要下载的版本。
设置好安装位置后,仅需勾选使用C++的桌面开发即可,然后点击安装即可。

image

MinGW-w64

通常情况下,如果已经安装了Microsoft Visual Studio,那么可能不需要额外安装MinGW-w64。然而,博主需要使用LLVM中的ClangdLLDB,以获取更强大的代码提示和调试功能。同时,通过XMake下载的一些包可能依赖于Microsoft Visual Studio,因此确保两者同时存在是为了满足项目的构建和依赖要求。

WinLibs官网的Release versions下载最新的UCRT runtime带POSIX + LLVM/Clang/LLD/LLDB的版本。

image

下载并解压完成后,请确保将mingw32/binmingw64/bin文件夹添加到系统的PATH环境变量中,并且路径中不包含任何空格。

image

在终端输入分别输入clangd --versionlldb --version出现下图内容,代表安装成功。

image

XMake

Releases下载最新版本的xmake-master.win64.exe。选择好安装路径后,其他按照默认要求进行安装。

安装完成后,在终端输入xmake -version出现下图内容代表安装成功。

image

环境配置

XMake 配置

更改全局配置文件根目录

默认情况下,XMake的全局配置的存储目录在C:\Users\user_name\.xmake。这里存储着全局配置文件,依赖包的安装、缓存等其他全局文件,默认都会存储在这个目录下。

通过在系统的PATH环境变量中添加XMAKE_GLOBALDIR可更改全局配置文件根目录,下图将XMAKE_GLOBALDIR设置为XMake的安装位置,则在安装位置下会创建.xmake文件夹,其中.xmake\cache为依赖包的下载缓存,.xmake\packages为依赖包的安装位置。

image

设置代理

使用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
	"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,
}
posted @ 2023-11-12 19:35  laugh12321  阅读(931)  评论(0编辑  收藏  举报