记录Windows下基于MSYS2的开发环境搭建

0. 前言

最近在折腾Windows下的开发环境,发现MSYS2是一个非常强大的工具,十分适合我这种喜欢极致轻量化的人。
做此记录,以便日后查阅。

主要优势

  • 轻量化(相比臃肿的MSVC)
  • Unix工具链的Windows实现
  • 完善的包管理系统

1. 安装MSYS2

环境选择

  • MSYS2 提供了不同的环境,这些环境之间的主要区别在于工具链和实现。如果不确定使用哪个,请选择 UCRT64
Name Prefix Toolchain Architecture C Library C++ Library
MSYS /usr gcc x86_64 cygwin libstdc++
UCRT64 /ucrt64 gcc x86_64 ucrt libstdc++
CLANG64 /clang64 llvm x86_64 ucrt libc++
CLANGARM64 /clangarm64 llvm aarch64 ucrt libc++
MINGW64 /mingw64 gcc x86_64 msvcrt libstdc++

Note:
路径说明
安装路径示例:C:\msys2\ucrt64
软件安装路径:对应环境的bin目录,例如:C:\msys2\ucrt64\bin

  • 安装基本编译器:
1
2
3
4
5
6
7
#可选:使用tuna镜像
sed -i "s#https\?://mirror.msys2.org/#https://mirrors.tuna.tsinghua.edu.cn/msys2/#g" /etc/pacman.d/mirrorlist*

pacman -Syu # 更新软件包数据库并升级系统,需要重启MSYS2
pacman -S pactoys # 安装pactoys
pacboy -S neovim zsh # 安装neovim, zsh
pacman -S git # 安装git

Note:

  • pactoys 是MSYS2提供的软件包管理工具,它功能与pacman基本相同,但是它可以直接安装对应环境的软件包,例如:UCRT64环境下pacboy -S gcc等价于pacboy -S gcc
  • Toolchain 包含了编译工具链,包括:gcc, gdb, make等。
  • cmake 需要单独安装。

2. 配置环境变量(如需要)

环境变量注意:

  • ⚠️危险操作(避免冲突):
    不要将 /usr/bin 加入系统PATH

  • 推荐配置:
    只添加对应环境的bin目录:
    C:\msys2\ucrt64\bin

Windows Terminal配置

  • Windows Terminal 的配置文件中,添加如下内容:
1
2
3
4
5
6
7
8
9
10
11
"list": 
[
{
"commandline": "C:\\msys2\\msys2_shell.cmd -defterm -here -no-start -ucrt64 -shell zsh",
"guid": "{fd57d26d-d3d0-448a-8bd5-e44632685d72}",
"hidden": false,
"icon": "C:\\msys2\\ucrt64.ico",
"name": "MSYS2 UCRT64",
"startingDirectory": "C:\\msys2\\ucrt64\\home\\%USERNAME%"
}
]

Note:

  • 如果你不使用zsh,可以将-shell zsh修改为-shell bash等。
  • 你也可以在GUI中添加,以上参数分别对应:
    参数 说明
    commandline 命令行
    icon 图标
    name 名称
    startingDirectory 启动目录
  • 有关zsh的相关配置,这里不再赘述

3. 配置开发环境

  1. vscode 必备插件:
    • C/C++
    • C/C++ Extensions
    • CMake Tools
    • Code Runner
  2. C++插件配置(.vscode/c_cpp_properties.json)示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
"C:/msys2/ucrt64/include/**"
],
"defines": [],
"compilerPath": "C:/msys2/ucrt64/bin/gcc.exe", //编译器路径
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64"
}
],
"version": 4
}
  1. vscode 必备插件:
    • Clangd
    • Cmake Tools
    • Code Runner
  2. 配置clangd与coderunner,在settings.json中添加如下内容:
1
2
3
4
5
6
7
{
"clangd.path": "C:\\msys2\\clang64\\bin\\clangd.exe",
"code-runner.executorMap": {
"c": "cd $dir && clang $fileName -o $fileNameWithoutExt && ./$fileNameWithoutExt",
"cpp": "cd $dir && clang++ $fileName -o $fileNameWithoutExt && ./$fileNameWithoutExt"
}
}

Still learning…

4. Qt环境

  • MSYS2,输入以下命令安装Qt:
1
2
3
4
5
pacboy -S qt-creator # 安装qt-creator
pacboy -S qt6 # 安装qt6、

#按需安装
pacboy -S qt6-static # 安装qt6静态库
  • PowerShell或MSYS2 中,运行以下命令,启动Qt Creator:
1
qtcreator

5. Node.js环境

使用fnm管理Node.js版本

1
2
3
4
5
6
7
8
9
10
11
12
13
# 安装fnm
curl -fsSL https://fnm.vercel.app/install | bash

# 配置镜像 (~/.zshrc)
export FNM_NODE_DIST_MIRROR=https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/

# 安装LTS版本
fnm install --lts
# 安装其他版本
# fnm install 16.14.0

# 切换版本
fnm use 16.14.0

这会将Node.js安装到C:\Users\%USERNAME%\AppData\Roaming\fnm\node-versions目录下.

6. Python环境

1
2
3
4
5
6
7
conda create -n myenv python=3.8 # 创建一个名为myenv的虚拟环境,并安装Python 3.8
conda activate myenv # 激活myenv虚拟环境
conda deactivate # 退出虚拟环境
conda install numpy # 在当前虚拟环境中安装numpy
conda remove numpy # 在当前虚拟环境中卸载numpy
conda env list # 列出所有虚拟环境
conda env remove -n myenv # 删除myenv虚拟环境

7. 结语

完成后,你将获得:

  • ✅ C/C++
  • ✅ Qt
  • ✅ Node.js
  • ✅ Python

记录完