【问题标题】:How to compile code with a Makefile in Windows command prompt using MinGW compiler?如何使用 MinGW 编译器在 Windows 命令提示符下使用 Makefile 编译代码?
【发布时间】:2019-07-11 12:59:50
【问题描述】:

我正在尝试使用也提供给我的 makefile 编译提供给我的一些代码。我在 Windows 10 上将 MinGW 用于我的编译器。

我对 makefile 的经验很少,而且我创建和运行的 makefile 远没有我试图用来编译一些代码的那个复杂。

通常当我使用 makefile 进行编译时,在命令提示符下,我会转到文件所在的目录,然后键入命令“make”并创建一个可执行文件,然后我可以运行代码。然而,这一次它不起作用。我收到一条消息:

'make' 未被识别为内部或外部命令, 可运行的程序或批处理文件。 "

这是make文件的内容:

CC=g++
CFLAGS=
INC=
LIB=

all:  sorting

sorting:  Driver.o Helper.o
    $(CC) $(CFLAGS) -o $@ $^ $(LIB)

.cpp.o:
    $(CC) $(CFLAGS) $(INC) -c -o $@ $^ 

Driver.cpp:  Sorting.hpp Helper.cpp

Helper.cpp:  Helper.hpp

clean:
    rm -f *.o sorting

如何使用这个 make 文件来运行代码?

【问题讨论】:

  • MinGW-w64 附带 mingw32-make.exe,将其 bin 目录放入您的路径环境变量,然后尝试调用mingw32-make
  • 请正确设置帖子的格式。这非常重要,尤其是对于 makefile 语法。确保空白和制表符没有歧义,这些在此处的表示中会丢失。例如。声明所有前导空格绝对总是制表符。然后仔细检查是否确实如此。然后再次检查。
  • 我对您的格式做了一些改进,但请仔细检查。
  • 使用 CMake 怎么样?

标签: c++ c g++ mingw


【解决方案1】:

MinGW 不提供名为 make 的 Make 程序。它提供了 GNU Make 例如在 MinGW bin 目录中名称为 mingw32-make.exe C:\MinGW\bin\mingw32-exe.

所以要运行 MinGW 的 Make 程序,你必须运行:

> mingw32-make

当你这样做时,MinGW bin 目录必须在你的 PATH 中。

【讨论】:

    【解决方案2】:

    您可以按照此链接中的说明进行操作: install and use make in windows

    按照本指南操作后,您可以在 Windows 中使用 powerShell 运行 make 命令,方法是转到您的文件夹,然后选择“文件 > 打开 Windows PowerShell”

    【讨论】:

      【解决方案3】:

      按照here 的说明安装 MSYS2。运行pacman -S make安装make

      作为奖励,MSYS2 提供了最新的 GCC 和一堆预构建的库。


      还有mingw32-make,这是一种不同的野兽,应该尽可能避免。

      普通的make 使用sh shell(与Linux 上的make 相同),而mingw32-make 使用Windows CMD。

      这意味着mingw32-make 无法运行某些 makefile,因为其中许多都希望使用类似 Linux 的环境。

      根据我的经验,mingw32-make 唯一擅长的是运行由 CMake 生成的 Makefile(可以生成 make-flavored 和 mingw32-make-flavored makefile,具体取决于标志)。

      【讨论】:

        【解决方案4】:

        我的回答来晚了。但是你得到了正确的答案,MinGW 不是带有“make.exe”而是带有“MinGW-make.exe”,而且不需要去 MinGW/bin,将这个目录添加到你的路径就足够了。

        内特·格鲁斯

        沃尔夫冈

        【讨论】:

        • 这与Mike's answer 中的解决方案相同。 在回答已有答案的旧问题时,请确保提供新颖的解决方案或比现有答案更好的解释。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-22
        • 1970-01-01
        • 2015-09-22
        • 2011-03-04
        • 2011-09-21
        相关资源
        最近更新 更多