记录一次Win下的C++环境搭建(VSCode+MinGW+Clangd+xmake)

这套环境是VSCode+MinGW(MSYS2)+Clangd+Xmake的配置。

MinGW#

网上很多教程引导去的MinGW-w64 gcc版本只更新到了8.1.0就停更了,而实际中gcc版本已经到达12了,因此我们使用MSYS2去安装GCC。

首先使用scoop安装msys2(在main bucket中就有):

Copy
scoop install msys2

终端中输入msys2进入环境,下载minGW:

Copy
pacman -S mingw-w64-x86_64-toolchain

下面会提示选择哪些工具,如果不是硬盘空间实在有限的话,直接回车默认安装全部即可。

随后找到minGW的bin目录(这里推荐一手Listary,直接搜索g++.exe打开文件目录即可,非常方便),添加环境变量,此时GCC编译器就算是安装成功了。

clangd#

这个是花费了我最多精力的地方,有一说一,clangd在代码提示补全上确实吊打vscode自带的C/C++扩展,但是在Windows上的配置费了一番功夫

在vscode扩展商店中搜索clangd下载,完成后右下角会弹窗提醒你安装clangd server,点击Install即可直接安装,这一点非常便捷,clangd默认直接绑定了VS路径下的MSVC库,如果需要修改为MinGW则要改动target。

配置如下:

Copy
{ "clangd.arguments": [ "--header-insertion=never", "--completion-style=detailed", "--query-driver=D:\\6-EnglishPathSoftwates\\ScoopUser\\apps\\msys2\\2022-06-03\\mingw64\\bin\\g++*" ], "clangd.fallbackFlags": [ "-std=c++14", "-I${workspaceFolder}/src/includes", "--target=x86_64-w64-windows-gnu" ] }

逐一解释:

  • header-insetion:是否自动引入头文件,这里设置的是从不。
  • completion-style:设置提示格式,这里设置的是展示所有细节。
  • query-driver:设置clangd server的驱动库路径,这里我设置了mingw的路径,但似乎没有效果(clangd仍然链接到了MSVC当中)
  • std:设置c++标准
  • -I:设置用户自定义的库路径
  • --target:设置链接目标,这里改成了GNU,即对应MinGW

学习C++ Primer这本书的需要注意一下,虽然全书是按照C++11标准写的,但是这里如果设置成C++11,clangd会书中的附带代码报错(比如Sales_item.h)。

xmake#

这是前段时间发现的一个新的构建工具(也不算新了,好像已经release两年了),用的是lua脚本,在我学习C++Primer的过程中感觉比cmake更加简洁易懂,用它管理我写的习题集非常轻松。贴一段xmake的配置代码:

Copy
target("E632") set_kind("binary") add_files("src/chapter6/e632.cpp") target("E633") set_kind("binary") add_files("src/chapter6/e633.cpp") target("E642") set_kind("binary") add_files("src/chapter6/e642.cpp") target("E644") set_kind("binary") add_files("src/chapter6/e644.cpp")

这款工具也可以在scoop中直接下载,vscode也提供了官方插件快速操作(不过我觉得命令行已经够傻白甜了),推荐大家使用。

同时它也可以根据lua脚本直接生成CmakeList文件(也就是向下兼容Cmake),这个功能我没有深入体验过,感兴趣的可以尝试一下。

posted @   _acct  阅读(5187)  评论(3编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示
CONTENTS