![](/img/trans.png)
[英]How to compile code with a Makefile in Windows command prompt using MinGW compiler?
[英]How to compile makefile using MinGW?
我是新手。 只是想问一下如何编译makefile。 我在 C 语言中使用 MinGW 编译器。 我是否必须将所有文件都保存在 MinGW\\bin 中? 因为现在我的文件在不同的目录中。
感谢帮助。
摘自http://www.mingw.org/wiki/FAQ :
make 和 mingw32-make 有什么区别?
make 的“本机”(即:依赖于 MSVCRT)端口缺少某些功能,并且由于 Win32 上缺少 POSIX 而修改了功能。 MSYS 发行版中还存在一个依赖于 MSYS 运行时的 make 版本。 这个端口的运行更像是 make 的目的,并且在执行过程中减少了麻烦。 基于此,MinGW 开发人员/维护人员/打包人员决定最好重命名本机版本,以便“本机”版本和 MSYS 版本可以同时存在,而不会出现文件名冲突。
因此,查看 C:\\MinGW\\bin 目录并首先确定 make 可执行文件的内容,是否已安装。(make.exe 或 mingw32-make.exe)
在使用MinGW之前,你应该添加C:\\MinGW\\bin; 使用http://www.mingw.org/wiki/Getting_Started/ 中提到的说明添加到 PATH 环境变量
然后 cd 到你的目录,在那里你有 makefile 并尝试使用mingw32-make.exe makefile.in
或简单地make.exe makefile.in
(取决于 C:\\MinGW\\bin 中的可执行文件)。
如果您想要基于 GUI 的解决方案,请安装 DevCPP IDE,然后重新制作。
您必须主动选择安装 MSYS 才能获取 make.exe。 因此,如果 MinGW 安装正确,您应该始终至少拥有(本机)mingw32-make.exe。 如果您安装了 MSYS,您将拥有 make.exe(可能在 MSYS 子文件夹中)。
请注意,许多项目需要首先创建一个 makefile(例如,使用配置脚本或 automake .am 文件),而这一步需要 MSYS 或 cygwin。 让你想知道他们为什么要费心分发原生品牌。
一旦有了 makefile,就不清楚本机可执行文件是否需要与 MSYS make 不同的路径分隔符(正斜杠与反斜杠)。 任何自动生成的 makefile 都可能具有 unix 样式的路径,假设本机 make 可以处理这些路径,则编译后的输出应该是相同的。
我在 C:\\MinGW\\bin 的 bin 中有 MinGW 和 mingw32-make.exe。 同样,我将 bin 路径添加到我的 Windows 路径中。 之后,我将其名称更改为 make.exe 。 现在我可以在我的 Makefile 方向写命令“make”并像 Linux 一样执行我的 Makefile。
首先检查您的系统上是否安装了 mingw32-make。 在windows终端或cmd中使用mingw32-make.exe命令检查,否则安装包mingw32-make-bin。
然后转到 bin 目录 default ( C:\\MinGW\\bin ) 创建新文件 make.bat
@echo off
"%~dp0mingw32-make.exe" %*
添加以上内容并保存
在powershell中设置env变量
$Env:CC="gcc"
然后编译文件
make hello
其中 hello.c 是源代码的名称
请了解 automake 和 autoconf。
Makefile.am 由 automake 处理以生成由 make 处理的 Makefile 以构建您的源代码。
我在这里找到了一个很好的例子: https : //bigcode.wordpress.com/2016/12/20/compiling-a-very-basic-mingw-windows-hello-world-executable-in-c-with-a-生成文件/
它是一个简单的 Hello.c(您可以使用带有 g++ 的 c++ 而不是 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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.