如何在Windows上使用GNU Make?

101

我安装了MinGW和MSYS,并将C:\MinGW\bin添加到PATH,但仍无法在Windows的cmd上运行Makefile。我想运行cmd.exe,然后在其中键入,例如make all,但我的cmd显示没有这样的命令。

我该怎么办?我不想使用MSYS shell,那不是重点。有没有想法如何在Windows cmd中使用GNU Make,就像我在Ubuntu中所做的那样?我对Cygwin不感兴趣。


1
你需要将它添加到系统设置中的环境变量下的PATH中。 - slugonamission
3
@slugonamission:我做到了!我把 C:\MinGW\msys\1.0\bin 添加到了PATH中,它起作用了! :D 但仍然有问题,make向我显示:http://pastie.org/private/ixaaqbq2xl3geyg0emnow - yak
1
在您的“all”目标中,hello.exe需要与“all”位于同一行,才能被视为该目标的依赖项。如果不是,则成为“all”任务的一部分。 - slugonamission
我在这篇文章中回答了如何在MSYS中安装make:https://dev59.com/BWnWa4cB1Zd3GeqP4tvK#20870525 - Michal K
在我的特定情况下,将MinGW的bin目录添加到PATH中,我发现“make”的名称不同,“mingw32-make”。因此,如果我在cmd上写“make”,什么也不会发生,但如果我输入“mingw32-make”,它就可以工作。 - Andrea
显示剩余11条评论
7个回答

106

解释

在目录C:\MinGW \ bin中有一个可执行文件mingw32-make.exe,它是您要运行的make程序。 您可以使用关键字mingw32-make来运行程序make,因为您已将所需目录添加到系统路径中,但这不是易于记忆的关键字。


解决方案

将文件名从mingw32-make.exe改为make.exe,这样您就可以使用关键字make运行程序make了。

重命名可以通过以下两种方式完成:

  1. 手动右键单击并更改文件名。
  2. 通过运行命令copy c:\MinGW\bin\mingw32-make.exe c:\MinGW\bin\make.exe来完成。

结果

现在,如果在命令提示符上键入make,它应该输出类似于:

make: *** No targets specified and no makefile found.  Stop.
这意味着程序make被运行了。

10
如果还不是很清楚的话,make 命令在文件 mingw32-make.exe 中。由于目录 c:\MinGW\bin 已经在系统路径中,你可以像使用命令 mingw32-make 一样使用它,或者将 mingw32-make.exe 复制(更安全的做法是重命名)为 make.exe - Tomáš Zato
1
基本上,出于膨胀的原因,你应该避免将msys或mingw作为环境变量的一部分,而且因为msys目录是本地的。在msys中的路径将允许您使用make(如果它在mingw64的bin中),但不涉及此问题。同样不涉及这个问题,你应该创建一个到mingw32-make.exe的硬链接,命名为make.exe,这样可以使生活更轻松,而不必克隆exe。尝试:mklink /H C:\MinGW\bin\mingw32-make.exe C:\MinGW\bin\make.exe - user2262111
重命名文件很容易,但在安装更新时也很容易忘记更改。为了获得“别名”,您可以使用doskey。由于Windows的向后兼容性,您可以在C:驱动器上拥有autorun.bat,并且Windows将在每次启动cmd提示符时运行该文件(就像Linux中的.bashrc一样,但是系统范围)。在autorun.bat中,您可以放置@doskey make=mingw32-make.exe $*这一行,它告诉Windows在您键入make时使用mingw32-make.exe,而$*会将您传递给make的所有参数附加到mingw32-make.exe上。 - pietervanderstar

9
我正在使用来自GnuWin32项目的GNU Make, 请参见http://gnuwin32.sourceforge.net/。但是,这个项目已经有一段时间没有更新了,所以我不确定它的状态。

6

虽然这个问题已经有些年头了,但仍然被许多使用MSYS2的人提出。

今年我开始使用它来代替CygWin,并且感到相当满意。

要安装make,打开MSYS2 shell并输入以下命令:

# Update the package database and core system packages
pacman -Syu
# Close shell and open again if needed

# Update again
pacman -Su

# Install make
pacman -S make

# Test it (show version)
make -v

4
作为另一种选择,如果您只想安装make,可以使用Chocolatey软件包管理器通过以下方式安装GNU make

choco install make -y

这样就可以解决您可能遇到的任何路径问题。


最好使用管理员身份运行PowerShell。特别是当我尝试在Git Bash中运行时,没有使用-y选项,Chocolatey会警告我以普通用户身份运行,然后给出一个Do you want to continue?([Y]es/[N]o): N提示,然后当我按下ENTER键时无法响应。最终我不得不使用Ctrl-C退出,这导致另一个警告消息。显然,Chocolatey不能安全地处理Ctrl-C。 - AJM

3

您可以通过命令提示符将应用程序文件夹添加到路径中,方法如下:

setx PATH "%PATH%;c:\MinGW\bin"

请注意,您可能需要打开一个新的命令窗口,以使修改后的路径设置生效。


0

user1594322 给出了一个正确的答案,但当我尝试时遇到了管理员/权限问题。我能够复制 'mingw32-make.exe' 并粘贴它,绕过管理员问题,然后编辑副本为 'make.exe'。在 VirtualBox 中的 Win7 客户机上。


0

Make工具本身可作为独立可执行文件(gnuwin32.sourceforge.netmake)使用,但在适当的开发环境中使用它意味着使用msys2

Git 2.24(2019年第四季度)说明了这一点:

请查看提交 4668931, 提交 b35304b, 提交 ab7d854, 提交 be5d88e, 提交 5d65ad1, 提交 030a628, 提交 61d1d92, 提交 e4347c9, 提交 ed712ef, 提交 5b8f9e2, 提交 41616ef, 提交 c097b95 (2019年10月4日),以及提交 dbcd970 (2019年9月30日) 由Johannes Schindelin (dscho)提交。
(由Junio C Hamano -- gitster --合并于提交 6d5291b,2019年10月15日)

test-tool run-command:学习运行(部分)测试套件

签名作者:Johannes Schindelin

Git for Windows通过提供开发环境来构建Git并运行其测试套件。

为此,“Git for Windows SDK”提供了整个MSYS2系统,包括GNU make和GCC。
这确实需要代价:初始下载的SDK大小为数百兆字节,并且解压后的SDK占用约2GB的磁盘空间。

在Windows上更本地化的开发环境是Visual Studio。为了帮助贡献者使用该环境,我们已经有一个Makefile目标vcxproj,它生成一个提交与项目文件(和其他生成的文件),并且Git for Windows的vs/master分支正在不断使用该目标重新生成。

这个想法是允许在Visual Studio中构建Git,并使用Portable Git运行单个测试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接