在windows上配置完美的C++开发工具链

Posted by ZX on 27 June 2022

Windows上的C++开发向来让人不是很舒服,它缺少Linux中的包管理机制,使用第三方C++库极其麻烦,默认的命令行环境难用,编译器普遍老旧,或是离开了VS就不会编译程序了。本教程将解决上述大部分痛点。

本教程不适用于C/C++初学者,初学者建议使用带有自动补全的小熊猫devC++

配置Msys2环境

Msys2为Windows带来了Linux上的命令行工具和一套包管理器,在这里下载:https://www.msys2.org/

按照安装工具的提示安装完成后,需要将[安装位置]\msys64\usr\bin[安装位置]\msys64\mingw64\bin目录添加到环境变量PATH。需要注意的是,添加到系统变量和用户变量均可,但位置一定要在C:\WindowsC:\Windows\system32一系列后边,以免对正常的系统运行产生干扰。

配置完成后,打开一个cmd或者是powershell,就可以在里面用linux的命令了。

然后就可以安装工具链了

pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-clang mingw-w64-x86_64-clang-tools-extra mingw-w64-x86_64-xmake git

美化命令行环境并添加智能补全(可选)

我自己的命令行环境效果如下:

首先在Microsoft Store里安装Windows Terminal

然后在命令行中安装fish:pacman -S fish,然后安装oh-my-fish

最后在Windows Terminal添加fish.exe并作为默认项即可得到上面的效果

配置VS Code环境

安装插件:

  • C/C++
  • clangd
  • Clang-Format
  • XMake

C/C++和Clang-Format插件可按需配置,其中需要关闭C/C++的Intellisense功能,智能补全由clangd提供。

但是,clangd默认配置下只支持C++11标准,需要使用更新标准需要额外配置:

C:\Users\[用户]\AppData\Local下创建clangd文件夹,在clangd文件夹下创建config.yaml

If:
  PathMatch: .*\.cpp

CompileFlags:
  Add: [-std=c++20]

---
If:
  PathMatch: .*\.mpp

CompileFlags:
  Add: [-std=c++20]

---
If:
  PathMatch: .*\.hpp

CompileFlags:
  Add: [-std=c++20]

---
If:
  PathMatch: .*\.cc

CompileFlags:
  Add: [-std=c++20]

---
If:
  PathMatch: .*\.c

CompileFlags:
  Add: [-std=c17]

内容就是对于每个拓展名使用什么标准,也可以根据自己的需要添加其他的选项。

另外,需要在vscode中的clangd设置中第一项Arguements添加项--compile-commands-dir=.vscode

如果有运行单文件的需求,还可以安装插件Code Runner。

使用示例

  • 创建项目

    • 使用xmake create xxx创建项目
    • 使用xmake f -p切换平台,如windows(使用msvc编译器)、mingwlinux
    • 使用xmake命令编译
    • 使用xmake r运行
    • 另可以使用xmake && xmake r编译并运行
  • 在vscode中使用