【问题标题】:Why is this makefile not creating an executable with MinGW?为什么这个makefile没有用MinGW创建一个可执行文件?
【发布时间】:2015-05-03 01:58:53
【问题描述】:

我正在 Windows 上试用 MinGW。我已经能够使用 GCC 从 C 源文件创建可执行文件。

main.c 是这样的:

#include <stdio.h>

int main()
{
    int this_is_a_number;

    printf("Please enter a number: ");
    scanf("%d", &this_is_a_number);
    printf("You entered: %d", this_is_a_number);
    getchar();
    return 0;
}

makefile 有这个:

cProj: main.c
    gcc -o cProj main.c

当我从 powershell 运行 make 时,我得到了这个:

PS C:\Projects\cProj> make
Target 'cProj' is up to date
PS C:\Projects\cProj>

但是,我运行make后,目录中没有可执行文件。

PS C:\Projects\cProj> ls


    Directory: C:\Projects\cProj


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---          4/7/2015  10:33 PM        207 main.c
-a---          5/2/2015   8:35 PM         35 makefile

如您所见,makefile 没有错误。至少我看不到。 gcc 编译器确实使用传递给它的参数。当我运行gcc -o cProj main.c 时,它会创建一个没有任何问题的可执行文件。

我知道我拥有的 makefile 非常明确,对于实际项目来说并不是一个好的 makefile。我只是想让 make 在我的 Windows 机器上工作。

我做错了什么?

我(来自 MinGW)的 make 版本是 Digital Mars Make 5.06 版。

GCC 是 4.8.1 版。

感谢您的帮助。

【问题讨论】:

  • 我希望 MinGW 安装具有 GNU make,而不是数字火星的 make 形式(不是我有任何理由认为这对您遇到的任何问题负责)。
  • 可能就是这样....当我运行 mingw32-make.exe 时它可以工作!
  • 我想知道 Digital Mars Make 是否在那里,因为我前段时间下载了 D。
  • 我相信你是对的,你得到了带 D 的 Digital Mars make - 我想知道为什么它不像 GNU make 那样处理简单的 makefile,因为似乎没有对makefile有什么不寻常的地方。

标签: makefile mingw


【解决方案1】:

看来问题是我使用了错误的品牌。

当我执行 MinGW 实际附带的 make 程序时,该过程一切正常。

c:\Projects\cProj> mingw32-make.exe

这行得通。

【讨论】:

    【解决方案2】:

    要使 Digital Mars Make 工作,只需在您的 makefile 中附加一个终止行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      • 2019-05-28
      • 2014-07-03
      相关资源
      最近更新 更多