我是一名C++程序员,有GCC在Linux上的经验。我想要在Windows上开发一个应用程序,所以我需要一个完整的指南来了解mingw make文件、变量和mingw32-make。有人可以介绍一个关于这方面的资源吗?
mingw32-make
是GNU make的一个预编译版本,所以您可以访问http://www.gnu.org/software/make/manual/获取所有相关信息。
mingw32-make
将使用Windows PATH。因此,如果您尝试从Git Bash运行它,它的行为可能不像您预期的那样(即,当您不希望时,它会调用bat
脚本,而shims也无法正常工作)。SHELL:= / bin / bash
或类似内容不会产生任何影响(您可以通过运行make -d
进行调试),但您仍然可以通过设置SHELL:= bash.exe
来使用bash
而不是sh
。这并不能解决Windows PATH问题。.SHELLFLAGS:= -euo pipefail -c
,那么它在Git Bash中突然表现正常,就好像它开始使用类Unix路径(如果有人能确认/解释为什么,请告诉我们)。Makefile
中使用了以下内容:ifeq ($(OS),Windows_NT)
SHELL := bash.exe
else
SHELL := /usr/bin/env bash
endif
.SHELLFLAGS := -eo pipefail -c
使用这个设置,它在git bash中表现得像在Linux上一样正常。
$SHELL
环境变量,而Unix make则不尊重。当然,如果您使用$(shell ...)
,它将取决于您调用的shell和安装的工具。(但是如果shell是bash,并且您已经安装了CygWin并将其添加到了路径中,它几乎就像Unix一样工作。) - James Kanzemake
的程序缺少一些功能,而不是名为mingw32-make
的程序。(但也许正好相反---页面并不太清楚,我在该网站上找不到其他相关文档。) - James Kanzemingw32-make
实际上是make
的不同版本,它松散地修补了支持Win32风格路径,并且如果与任何Unix风格的shell一起使用,则无法正常工作 - 实际上,如果在PATH
中找到sh
,则会出现问题。通常,您不能使用为make
编写的相同makefile来使用mingw32-make
。 - alecovminggw32-make
已被移除,并且在最近的 mingw 软件包中已经不再使用,至少在 Cygwin 上是如此。除非我错过了什么,否则我已经好几年没见到它了。 - not2qubit