我是新手。只是想问问如何编译 makefile。我使用 C 语言的 MinGW 编译器。我必须将所有文件保存在 MinGW 文件夹中吗?因为现在我的文件在另一个目录里。
谢谢你的帮助。
请了解有关汽车制造和自动化。
Am 由 auto 处理以生成 Makefile,make 处理 Makefile.am 以构建源代码。
Http://www.gnu.org/software/automake/
节选自 http://www.mingw.org/wiki/FAQ:
Make 和 mingw32-make 有什么区别?
Make 的“本机”(即: MSVCRT 依赖)端口缺乏某些功能,并且由于 Win32上缺乏 POSIX 而修改了功能。MSYS 发行版中还存在一个 make 版本,该版本依赖于 MSYS 运行库。这个端口的操作更符合 make 的操作要求,并且在执行过程中不会带来太多麻烦。基于此,MinGW 开发人员/维护人员/包装人员决定最好重命名原生版本,以便“原生”版本和 MSYS 版本可以同时存在,而不会出现文件名冲突。
因此,查看 C: MinGW bin 目录,首先确保安装了哪些 make 可执行文件(make.exe 或 mingw32-make.exe)
在使用 MinGW 之前,您应该使用 http://www.mingw.org/wiki/Getting_Started/中提到的指令将 C: minGW bin 添加到 PATH 环境变量
然后 cd 到您的目录,在那里您有 makefile 并尝试使用 mingw32-make.exe makefile.in或简单的 make.exe makefile.in(取决于 C: MinGW bin 中的可执行文件)。
mingw32-make.exe makefile.in
make.exe makefile.in
如果需要基于 GUI 的解决方案,请安装 DevCPPIDE,然后重新制作。
您必须主动选择安装 MSYS 才能获得 make.exe。因此,如果 MinGW 安装正确,那么您应该始终至少拥有(原生的) mingw32-make. exe。如果您安装了 MSYS,那么您将拥有 make.exe (可能在 MSYS 子文件夹中)。
请注意,许多项目需要首先创建 makefile (例如使用配置脚本或 auto)。这个步骤需要 MSYS 或 cygwin。不禁让人纳闷,他们为什么要费心分销本地产品。
一旦有了 makefile,就不清楚原生可执行文件是否需要与 MSYS make (正斜杠与反斜杠)不同的路径分隔符。任何自动生成的 makefile 都可能有 unix 样式的路径,假设本机 make 可以处理这些路径,那么编译后的输出应该是相同的。
我在这里发现了一个很好的例子: https://bigcode.wordpress.com/2016/12/20/compiling-a-very-basic-mingw-windows-hello-world-executable-in-c-with-a-makefile/
它是一个简单的 Hello.c (可以使用 c + + 和 g + + 代替 gcc) ,在 windows 上使用 MinGW。
Makefile 看起来像:
EXECUTABLE = src/Main.cpp CC = "C:\MinGW\bin\g++.exe" LDFLAGS = -lgdi32 src = $(wildcard *.cpp) obj = $(src:.cpp=.o) all: myprog myprog: $(obj) $(CC) -o $(EXECUTABLE) $^ $(LDFLAGS) .PHONY: clean clean: del $(obj) $(EXECUTABLE)
我在 C: MinGW bin 中的 bin 中有 MinGW 和 mingw32-make. exe。同样,我将 bin 路径添加到我的 windows 路径。之后我把它的名字改成 make. exe。现在我可以按照 Makefile 的方向编写命令“ make”,并执行与 Linux 相同的 Makefile。
首先检查您的系统上是否安装了 mingw32-make。 在 windows 终端或 cmd 中使用 mingw32-make. exe 命令来检查, Else 安装程序包 mingw32-make-bin。
然后转到 bin 目录 default (C: MinGW bin)创建新文件 make.bat
@echo off "%~dp0mingw32-make.exe" %*
添加上述内容并保存
在 powershell 中设置 env 变量
$Env:CC="gcc"
然后编译文件
make hello
其中 hello.c 是源代码的名称