我正在按照我将其存储库克隆到我的机器的某人的说明进行操作。我想使用 make
命令作为设置代码环境的一部分,但我使用的是 Windows。我在网上搜索,但我只能找到一个 make.exe
文件、一个 make-4.1.tar.gz
文件(我不知道下一步该做什么)以及如何下载 MinGW 的说明(适用于 GNU;但安装后我没有'找不到任何提及“make”)。
如何在没有 GNU 编译器或相关软件包的情况下在 Windows 中使用 make
?
make
不太可能解决您的问题。许多 Makefile 是为类 Unix 系统编写的,并且需要您安装大量额外的实用程序(如果项目涉及编译代码,则包括受支持的编译器),例如 Cygwin,或者如果您真的无法释放,则只需切换到 WSL 等平台完全来自 Windows。
make
是一个 GNU 命令,因此在 Windows 上获取它的唯一方法是安装一个类似于 GNUWin32 提供的 Windows 版本。无论如何,有几种选择:
最简单的选择是使用 Chocolatey。首先你需要安装这个包管理器。安装后,您 simlpy 需要安装 make(您可能需要在提升的/管理员命令提示符下运行它): choco install make 其他推荐的选项是安装适用于 Linux (WSL/WSL2) 的 Windows 子系统,因此您将拥有一个 Linux您选择的发行版嵌入在 Windows 10 中,您可以在其中安装 make、gcc 以及构建 C 程序所需的所有工具。对于较旧的 Windows 版本(带有 msvcrt.dll 的 MS Windows 2000 / XP / 2003 / Vista / 2008 / 7),您可以使用 GnuWin32。
一个过时的替代方案是 MinGw,但该项目似乎已被放弃,因此最好选择以前的选择之一。
GNU make 在巧克力上可用。
从这里安装巧克力。
然后,choco install make。
现在您将能够在 Windows 上使用 Make。我试过在 MinGW 上使用它,但它也应该在 CMD 上工作。
choco config set proxy ADDRESS:PORT
设置正确的代理
接受的答案通常是一个坏主意,因为手动创建的 make.exe
会保留并可能导致意外问题。它实际上破坏了 RubyInstaller:https://github.com/oneclick/rubyinstaller2/issues/105
另一种方法是通过 Chocolatey 安装 make(正如@Vasantha Ganesh K 所指出的)
另一种选择是从 Chocolatey 安装 MSYS2 并使用来自 C:\tools\msys64\usr\bin
的 make
。如果 make
没有随 MSYS2 自动安装,您需要通过 pacman -S make
手动安装它(正如@Thad Guidry 和@Luke 所指出的那样)。
C:\tools\msys64\usr\bin
中没有 make.exe ??
如果您使用的是 Windows 10,它内置在 Linux 子系统功能中。只需启动 Bash 提示符(按 Windows 键,然后输入 bash
并选择“Windows 上的 Ubuntu 上的 Bash”),cd
到您要创建的目录并输入 make
。
FWIW,Windows 驱动器位于 /mnt
中,例如 C:\
驱动器在 Bash 中是 /mnt/c
。
如果开始菜单中没有 Bash,以下是打开该 Windows 功能的说明(仅限 64 位 Windows):
https://docs.microsoft.com/en-us/windows/wsl/install-win10
从他们的官方网站下载 make.exe GnuWin32
在下载会话中,单击完成包,源除外。
按照安装说明进行操作。
完成后,将 <安装目录>/bin/ 添加到 PATH 变量中。
现在您将能够在 cmd 中使用 make。
Edit the System Environment Variables in the Control Panel
的弹出窗口时,选择它。系统属性 -->高级选项卡应用程序应弹出。查找底部显示“环境变量”的按钮
安装 Msys2 http://www.msys2.org 按照安装说明安装 make 使用 $ pacman -S make gettext base-devel 添加 C:\msys64\usr\bin\ 到你的路径
我可以建议一步一步的方法。
访问 GNUwin 下载安装程序 按照说明安装 GNUWin。您应该注意安装应用程序的目录。 (稍后您将需要它1)按照这些说明并将 make 添加到您的环境变量中。正如我之前告诉你的,现在是时候知道你的应用程序安装在哪里了。仅供参考:默认目录是 C:\Program Files (x86)\GnuWin32\。现在,更新 PATH 以包含新安装程序的 bin 目录。一个可能添加到路径的典型示例是:...;C:\Program Files (x86)\GnuWin32\bin
另一种选择是,如果您已经安装了 minGW 并将 bin 文件夹添加到 Path 环境变量中,则可以使用“mingw32-make”而不是“make”。
您还可以创建从“make”到“mingw32-make”的符号链接,或者复制和更改文件名。我之前不会推荐这些选项,它们将一直有效,直到您对 minGW 进行更改。
很有可能除了 GNU make 之外,您还需要许多 coreutils。 touch、rm、cp、sed、test、tee、echo等。构建系统可能需要 bash 功能,如果没有别的,从进程 ID ($$$$) 创建临时文件名是很流行的。如果没有 bash,那将无法工作。您可以使用适用于 Windows 的流行 POSIX 模拟器获得一切:
Cygwin (http://www.cygwin.org/) 可能是最受欢迎且与 POSIX 最兼容的一种。 Windows 路径有一些困难,而且速度很慢。
GNUWin (http://gnuwin32.sourceforge.net/) 它既好又快,但现在被放弃了。没有提供 bash,但可以从其他包中使用它。
ezwinports (https://sourceforge.net/projects/ezwinports) 我目前最喜欢的。快速且运行良好。它没有提供 bash,这对于某些构建系统来说可能是个问题。可以使用来自 ezwinports 的 make 和来自 Cygwin 或 MSYS2 的 bash 作为解决方法。
MSYS 1.19 已弃用。运行良好,但具有非常老的品牌(3.86 左右)
MSYS2 (https://www.msys2.org/) 运行良好,仅次于 ezwinports 的第二快解决方案。质量好,包管理器(pacman),所有可用的工具。我会推荐这个。
MinGW被抛弃了? MSYS 1.19 通常与 MinGW 软件包捆绑在一起,其中包含一个旧的 make.exe。使用包中的 mingw32-make.exe,它是最新的。
请注意,您可能无法选择您的环境。如果构建系统是为 Cygwin 创建的,它可能无法在其他环境中运行而无需修改(make 语言相同,但转义,路径转换工作方式不同,$(realpath) 在 Windows 路径上失败,DOS bat 文件启动为shell 脚本和许多类似的问题)。如果它来自 Linux,您可能需要使用真正的 Linux 或 WSL。如果编译器在 Linux 上运行,则为 Windows 安装 make 毫无意义,因为您必须在 Linux 上同时运行 make 和编译器。同样,如果编译器在 Windows 上运行,WSL 也无济于事,因为在那种环境下,您只能执行 Linux 工具,而不能执行 Windows 可执行文件。这有点棘手!
我曾经遇到过同样的问题。但我很惊讶在这里没有找到一个特定的解决方案。
从 GnuWin32 或通过 winget
安装是不错且简单的选择。但我只在那里找到了 make 3.8.1。此版本缺少非常重要的选项 -O
,它在编译多线程时正确处理输出。
choco
目前似乎提供 make 4.3。因此,人们可以期待那里的最新版本。
但也有自编译的选项。如果您必须安装用于编译的 make
,这应该是一个有效的选项。
前往 https://www.gnu.org/software/make/ 并下载您喜欢的版本解压缩 tar.gz 文件(使用 7zip 并解压缩文件两次以检索实际内容)导航到创建的目录打开命令在该目录中提示运行 build_w32.bat gcc 这将使用 gcc 编译器开始编译,您需要提前安装该编译器。在没有任何选项的情况下运行 build_w32.bat 时,他们会尝试使用 MSVC 编译器。旁注:我发现令人惊讶的是 gnu 不使用 gcc 作为默认值,但 MSVC :-) 忽略了编译期间创建的警告。结果应该仍然可以从directoy GccRel中检索您的新gnumake.exe(使用gcc编译时)将此文件放在您喜欢的位置并重命名为make.exe将位置添加到系统变量%PATH%
正如其他人所指出的:如果您还安装了其他程序的各种 make 版本,则此手动安装可能会导致冲突。
如果您想使用命令行模拟器cmder,一种可能会有所帮助的解决方案。您可以选择安装包安装程序。首先,我们使用以下行在 Windows 命令提示符下安装 chocately:
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
refreshenv
安装 Chocolatey 后,可以使用 choco 命令安装 make。安装后,您需要为 /cmder/config/user_aliases.cmd 添加一个别名。应添加以下行:
make="path_to_chocolatey\chocolatey\bin\make.exe" $*
然后 Make 将在 cmder 环境中运行。
安装 npm install Node Install Make node install make up node install make 如果上面的命令显示任何错误然后安装 Chocolatey(choco) 打开 cmd 并复制并粘贴以下命令(从 Chocolatey URL 复制的命令)@"%SystemRoot%\System32\WindowsPowerShell \v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command " [System.Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object System.Net.WebClient).DownloadString('https ://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
npm
的 make
包与大多数构建脚本所期望的 GNU Make 不同:它是 JavaScript 中 make
的重新实现,不能保证完全兼容对于传统的 makefile,这在 npm 上的包页面中有记录:“解析器 make.js
使用很小并且有缺陷,但对于大多数 Makefile,make.js 能够正确解析它们。” - 所以这不是 OP 想要的。'
mklink C:\bin\make.exe C:\MinGW\bin\mingw32-make.exe
。所以将来如果你升级你的mingw,链接将是完整的。mklink
。 MSYS2 的pacman
可以安装 无法正常工作的 makepacman -S make
。相反,mingw32-make.exe
已存在于msys64/mingw64/bin
中。也许它随gcc
一起提供。不过,我很困惑为什么它不只是被称为make.exe
。我刚刚将它复制到make.exe
。nmake
可能很有用,请参阅 doc。它可以在 VS 命令提示符下使用,但您当然可以将其添加到路径中。但是请注意,与 GNU make 相比,功能非常有限,并且文档几乎不存在......