为什么这个 makefile 不使用 MinGW 创建可执行文件?
Why is this makefile not creating an executable with MinGW?
我正在 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 机器上工作。
我做错了什么?
我的 make 版本(来自 MinGW)是 Digital Mars Make 5.06 版。
GCC 是 4.8.1 版。
感谢您的帮助。
看来问题是我使用了错误的品牌。
当我执行 MinGW 实际附带的 make 程序时,整个过程都有效。
c:\Projects\cProj> mingw32-make.exe
有效。
要使 Digital Mars Make 正常工作,只需在您的 makefile 中附加一个终止行。
我正在 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 机器上工作。
我做错了什么?
我的 make 版本(来自 MinGW)是 Digital Mars Make 5.06 版。
GCC 是 4.8.1 版。
感谢您的帮助。
看来问题是我使用了错误的品牌。
当我执行 MinGW 实际附带的 make 程序时,整个过程都有效。
c:\Projects\cProj> mingw32-make.exe
有效。
要使 Digital Mars Make 正常工作,只需在您的 makefile 中附加一个终止行。