所以我有一个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文件的任何输入也会非常有用!
答案 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可以告诉它何时(而不是)需要重建二进制文件。