MSYS make.exe 命令不会执行任何操作 ("Nothing to be done for...")
MSYS make.exe command won't do anything ("Nothing to be done for...")
好的,大家好。
我进行了很多搜索,看是否能找到问题的答案,但我找不到。
我在 Windows 10 上安装了最新版本的 MinGW 和 MSYS。
我根据 Zed Shaw 的指南(艰难地学习 C)创建了一个非常简单的 C 文件,它看起来像这样:
#include <stdio.h>
int main(int argc, char *argv[])
{
int distance = 666;
printf("You are %d miles away. \n", distance);
return 0;
}
现在,根据 Shaw 的指南,我应该可以使用以下命令编译文件:
make .\es1.c
它应该会自动识别出我正在编译 C 源文件并使用一些默认选项,例如“-o es1”,即使没有 makefile。
问题是当我尝试使用 MSYS 的 make 编译它时,我得到了这个:
make.exe": Nothing to be done for `.\es1.c'.
而且我无法以任何方式编译它。
如果我直接调用gcc编译器,这样:
gcc .\es1.c -o es1
有效。
我做错了什么?
谢谢大家
您需要向 make 命令提供 target(要构建的内容),而不是构建的依赖项。 make 工具将始终将非生成的源文件视为最新的,因为根据定义,没有任何东西可以构建它们。
对于你的情况,试试这个:
make es1.exe
(我假设您在 Windows 上并且您的 makefile 设置为创建具有 .exe
扩展名的目标。)
问题可能与 Unix 构建工具和 Windows 程序执行的精神分裂症交互有关:
user@dogbert ~/foo
$ echo "int main() { return 0; }" > foo.c
user@dogbert ~/foo
$ cat foo.c
int main() { return 0; }
到目前为止一切顺利。现在制作 - 不需要 makefile。
user@dogbert ~/foo
$ make foo
cc foo.c -o foo
虽然目标被命名为 foo
,但 foo.exe
已经完成。
user@dogbert ~/foo
$ ls
foo.c foo.exe
user@dogbert ~/foo
$ ./foo
user@dogbert ~/foo
$ ./foo.exe
似乎 foo
和 foo.exe
在 cygwin 上是同义词。
user@dogbert ~/foo
$ make foo
make: foo is up to date
user@dogbert ~/foo
$
好的,大家好。 我进行了很多搜索,看是否能找到问题的答案,但我找不到。 我在 Windows 10 上安装了最新版本的 MinGW 和 MSYS。 我根据 Zed Shaw 的指南(艰难地学习 C)创建了一个非常简单的 C 文件,它看起来像这样:
#include <stdio.h>
int main(int argc, char *argv[])
{
int distance = 666;
printf("You are %d miles away. \n", distance);
return 0;
}
现在,根据 Shaw 的指南,我应该可以使用以下命令编译文件:
make .\es1.c
它应该会自动识别出我正在编译 C 源文件并使用一些默认选项,例如“-o es1”,即使没有 makefile。 问题是当我尝试使用 MSYS 的 make 编译它时,我得到了这个:
make.exe": Nothing to be done for `.\es1.c'.
而且我无法以任何方式编译它。 如果我直接调用gcc编译器,这样:
gcc .\es1.c -o es1
有效。 我做错了什么?
谢谢大家
您需要向 make 命令提供 target(要构建的内容),而不是构建的依赖项。 make 工具将始终将非生成的源文件视为最新的,因为根据定义,没有任何东西可以构建它们。
对于你的情况,试试这个:
make es1.exe
(我假设您在 Windows 上并且您的 makefile 设置为创建具有 .exe
扩展名的目标。)
问题可能与 Unix 构建工具和 Windows 程序执行的精神分裂症交互有关:
user@dogbert ~/foo
$ echo "int main() { return 0; }" > foo.c
user@dogbert ~/foo
$ cat foo.c
int main() { return 0; }
到目前为止一切顺利。现在制作 - 不需要 makefile。
user@dogbert ~/foo
$ make foo
cc foo.c -o foo
虽然目标被命名为 foo
,但 foo.exe
已经完成。
user@dogbert ~/foo
$ ls
foo.c foo.exe
user@dogbert ~/foo
$ ./foo
user@dogbert ~/foo
$ ./foo.exe
似乎 foo
和 foo.exe
在 cygwin 上是同义词。
user@dogbert ~/foo
$ make foo
make: foo is up to date
user@dogbert ~/foo
$