Makefile,"没有什么可以为所有人做的"错误

时间:2015-02-23 00:35:47

标签: c gcc compilation makefile

所以我有一个make文件,存放在名为“temp”的目录中,下面的目录有一个src文件夹,有2个.c文件“file1.c”和“file2.c”。临时目录还包含一个包含文件夹(该文件夹为空)和一个bin文件夹(在生成make命令之前该文件夹为空)。我目前正在尝试获取单个.c文件进行编译(让它工作),但是单个文件似乎在这里不起作用。

目录的外观如下:

temp

进入临时..

bin include Makefile src

这是我的makefile:

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

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

1 个答案:

答案 0 :(得分:3)

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可以告诉它何时(而不是)需要重建二进制文件。