生成文件,"nothing to be done for all" 错误

Makefile, "nothing to be done for all" error

所以我有一个 make 文件,存储在一个名为 "temp" 的目录中,下面的目录有一个 src 文件夹,有 2 个 .c 文件 "file1.c" 和 "file2.c"。 temp 目录还包含一个 include 文件夹(它是空的)和一个 bin 文件夹(在 make 命令被设置为 运行 之前它是空的)。我目前正在尝试编译一个 .c 文件(让它工作),但一个文件在这里似乎不起作用。

目录如下所示:

temp

cd 进入温度..

bin include Makefile src

这是我的 makefile:

all:
    gcc -Wall -pedantic -std=c99 src/file1.c -Iinclude -o bin/runMe -lncurses

是的,在 gcc 之前有一个选项卡。在这个令人沮丧的问题上的任何帮助,将不胜感激。此外,如果可能的话,任何关于编译第二个 .c 文件的输入也会非常有帮助!

Nothing to be done for TARGET 意味着目标没有命令,在这种情况下,几乎可以肯定意味着您在该 gcc 行上没有选项卡。

话虽这么说,但这只是眼前的问题。这个 makefile 也没有遵循良好的做法,并且会不必要地重新编译您的程序(如果创建了 all 文件,也会完全停止工作)。

DrC 在当前已删除的答案中提供了关于如何改进 makefile 以避免后两个问题的非常好的建议。

具体来说,您的 makefile 应该更像这样:

.PHONY: all
all: bin/runMe

bin/runMe: src/file1.c
     gcc -Wall -pedantic -std=c99 $^ -Iinclude -o $@ -lncurses

all 目标标记为 .PHONY 以便创建的 all 文件或目录不会混淆 make 以及在源文件上设置先决条件对于您构建的二进制文件,以便 make 可以判断它何时需要(和不需要)重建二进制文件。