Windows 怎么执行 Makefile?最全实操教程,新手也能看懂
关键词:Windows 执行 Makefile、makefile、Windows 下运行 make、Windows 编译项目
很多人第一次接触 Makefile,通常是在 Linux、MAC 里,直接敲一条 make 就能编译项目。到了 Windows 上,却发现命令不认、环境不对、路径报错,整个人都懵了。
其实,Windows 不是不能执行 Makefile,而是需要先装一个“make 工具”,再配好编译环境。下面我按“问题分析 → 解决方案 → 注意事项”的思路,带你一步一步弄明白。
一、问题分析:为什么 Windows 不能直接执行 Makefile?
1. Makefile 本身不是“程序”
Makefile 只是一个构建脚本,它要依赖一个叫 make 的工具来执行。
在 Linux 里,这个工具通常默认就有,比如:
make
但 Windows 原生环境里,没有自带 GNU Make,所以你直接双击 Makefile,或者在命令行里输入 make,大概率会提示:
make 不是内部或外部命令'make' 不是可识别的命令- 或者编译器找不到
2. Makefile 通常是 Linux 风格
很多 Makefile 默认写法是给 Linux / Unix 环境准备的,常见问题有:
- 路径分隔符不同
- Linux 用
/ - Windows 常见是
\
- Linux 用
- 命令不同
- Linux 里常用
rm - Windows 里可能没有这个命令
- Linux 里常用
- 编译器不同
- Linux 常配
gcc/g++ - Windows 可能用
MinGW、MSVC、clang
- Linux 常配
所以,能不能执行 Makefile,不只看有没有 make,还要看你的编译环境是否匹配。
二、解决方案:Windows 执行 Makefile 的几种方法
下面给你按“最容易上手”到“专业方案”排序。
方案一:安装 MSYS2 + make + gcc(最推荐,免费,兼容性好)
这是 Windows 上跑 Makefile 最常见、最实用的方式,尤其适合:
- C/C++ 项目
- 开源项目
- 需要
make、gcc、g++的场景
步骤 1:安装 MSYS2
去 MSYS2 官网下载安装包,安装到默认路径即可,建议路径不要有中文和空格。
安装后打开 MSYS2 UCRT64 或 MSYS2 MinGW64 终端。
步骤 2:更新系统组件
在 MSYS2 终端里执行:
pacman -Syu
如果提示关闭窗口重开,就按提示操作,然后再执行一次:
pacman -Syu
步骤 3:安装 make 和编译器
如果你是 C/C++ 项目,执行:
pacman -S make gcc
如果是 C++,再确认有 g++,通常安装 gcc 就已经包含了。
如果你想更完整一点,可以装这些:
pacman -S make git mingw-w64-x86_64-toolchain
步骤 4:进入项目目录
假设你的项目在 D:\project,在 MSYS2 里路径写法是:
cd /d/project
注意,Windows 盘符路径在 MSYS2 里要写成 /d/项目路径。
步骤 5:执行 Makefile
在项目目录下直接运行:
make
如果 Makefile 里定义了目标,比如:
make clean
make all
make install
就按项目要求执行即可。
方案二:安装 MinGW-w64 + GNU Make(适合只想在命令行里用)
如果你不想装完整的 MSYS2,也可以单独装 MinGW-w64 工具链。
适合人群
- 只想编译 C/C++ 项目
- 想让 Windows 命令行里也能直接用
make - 对环境要求不高
步骤
- 安装 MinGW-w64
- 下载 GNU Make
- 把
bin目录加入系统环境变量Path
然后打开 cmd 或 PowerShell,输入:
make --version
gcc --version
如果能正常显示版本号,就说明环境配置成功了。
常见问题
很多人装完后还是提示找不到命令,原因通常是:
- 环境变量没配对
make.exe没放在 PATH 里- 装的是不带 make 的 MinGW 包
- 终端没重启
方案三:使用 WSL,在 Windows 里跑 Linux 环境(兼容性最好)
如果你的 Makefile 是典型 Linux 项目,Windows 下怎么都跑不顺,直接用 WSL 会省很多事。
WSL 是什么
WSL 就是 Windows 子系统 Linux,它能让你在 Windows 里运行 Ubuntu、Debian 等 Linux 环境。
适合人群
- 项目原本就是 Linux 服务器项目
- 有复杂 shell 脚本
- Makefile 里用了很多 Linux 命令
- 想要最接近原生 Linux 的体验
简单步骤
- 在 PowerShell 以管理员身份运行:
wsl --install
- 安装完成后,打开 Ubuntu
- 安装 make:
sudo apt update
sudo apt install make build-essential
- 进入 Windows 盘挂载目录,例如:
cd /mnt/d/project
- 执行:
make
优点
- 兼容性强
- Linux 命令基本都能用
- 对复杂项目最友好
缺点
- 对纯小白来说,比 MSYS2 稍微绕一点
- 需要多理解一个 Linux 环境
方案四:使用 Visual Studio 的 nmake(适合 MSVC 工程)
如果你的项目不是 GNU Make,而是偏微软生态,也可能用的是:
nmake
这不是 make,而是 Microsoft 的 make 工具。
适合场景
- Visual Studio 项目
- 使用 MSVC 编译器
- 依赖
.vcxproj或微软风格脚本
注意
nmake 和常见的 GNU Makefile 语法并不完全一样,很多 Linux 项目的 Makefile 不能直接给 nmake 用。
三、Windows 下执行 Makefile 的标准操作流程
如果你是新手,建议直接按这个流程来:
方法一:MSYS2 终端执行
- 安装 MSYS2
- 安装
make和gcc - 打开 MSYS2 终端
- 进入项目目录
- 输入:
make
方法二:PowerShell / CMD 执行
前提是你已经把 make.exe 加入环境变量。
然后在项目目录里执行:
make
如果项目有指定目标:
make clean
make all
make test
四、常见报错与解决办法
1. 提示“make 不是内部或外部命令”
原因
系统里没有安装 make,或者没有加入 PATH。
解决办法
- 确认安装了
make - 执行:
make --version
- 如果报错,检查环境变量
- 或直接改用 MSYS2 / WSL 终端
2. 提示“gcc 不是内部或外部命令”
原因
编译器没装,或 PATH 没配好。
解决办法
安装编译器工具链,比如:
pacman -S gcc
或者安装完整工具包:
pacman -S mingw-w64-x86_64-toolchain
3. Makefile 里有 rm、cp、mv 报错
原因
这些是 Linux 命令,Windows 原生 CMD 不支持。
解决办法
- 用 MSYS2 / WSL 执行
- 或者修改 Makefile,把命令改成 Windows 兼容写法
4. 路径写法错误
原因
Windows 和 Linux 路径格式不同。
解决办法
例如:
- Windows:
D:\project\test - MSYS2:
/d/project/test - WSL:
/mnt/d/project/test
5. 编译出来是 .exe,但运行报缺 DLL
原因
MinGW 环境下生成的程序,可能依赖运行时 DLL。
解决办法
- 把对应 DLL 放到 exe 同目录
- 或者静态链接
- 或者安装对应运行库
五、如果你的 Makefile 是自己写的,怎么提高 Windows 兼容性?
如果你希望这个 Makefile 在 Windows 上也能顺利执行,建议注意这几点:
1. 少用 Linux 专属命令
比如:
rm -rf build
可以考虑兼容处理,或者在 Windows 下使用 del、rmdir。
2. 尽量使用变量
例如:
CC = gcc
CFLAGS = -Wall -O2
这样更方便不同环境切换。
3. 路径统一处理
尽量避免在 Makefile 里硬编码死路径。
4. 复杂项目优先考虑 CMake
如果项目本身跨平台要求高,很多时候 CMake 比纯手写 Makefile 更适合 Windows。
CMake 可以生成:
- Makefile
- Visual Studio 工程
- Ninja 构建文件
这样兼容性会更强。
六、最适合小白的推荐方案
如果你是电脑小白,不知道该装哪个,直接按这个来:
最稳妥方案
安装 MSYS2,然后在 MSYS2 终端里执行 make。
原因很简单:
- 免费
- 好装
- 配套完整
- 出问题更容易查
- 对大多数 Makefile 兼容性较好
七、快速总结:Windows 执行 Makefile 怎么做?
最简单的结论
Windows 不能原生直接执行 Makefile,必须先装构建工具。
常用方案排行
- MSYS2 + make + gcc:最推荐,适合大多数人
- WSL + make:兼容性最好,适合 Linux 项目
- MinGW + make:轻量,但配置稍麻烦
- nmake:微软生态项目专用
一句命令思路
装好环境后,在项目目录执行:
make
如果是指定目标:
make clean
make all
八、实战建议:第一次执行 Makefile 之前先检查这 3 件事
1. 先确认项目目录里有 Makefile
看一下是否真的存在这些文件之一:
MakefilemakefileGNUmakefile
2. 先看 Makefile 用的是哪种工具
打开文件看看,是否明显依赖:
gccg++rmcpsh
如果有这些,基本说明它更偏向 Linux 环境。
3. 先确认你要用什么终端
- 想省事:用 MSYS2
- 想兼容 Linux:用 WSL
- 想走微软生态:用 Visual Studio / nmake
结尾总结
Windows 执行 Makefile 的核心,不是“点开文件就能跑”,而是要先准备好对应的 make 工具和编译环境。
对于绝大多数用户来说,MSYS2 是最实用的入门方案;如果项目比较 Linux 化,WSL 更稳;如果是 Visual Studio 工程,则考虑 nmake。
只要环境搭对了,Windows 上照样可以很顺利地执行 Makefile、编译项目、清理文件、生成可执行程序。

还没有评论,来说两句吧...