我试图运行这个简单的makefile命令但得到错误 - '没有什么可以为'所有''
FILES = file1.c file2.c file3.c
all:test
test:
for file in $(FILES);
do
echo $$file;
done
答案 0 :(得分:0)
目标test
没有依赖关系,因此没有理由构建,目标all
继承。它有说明,但应包括FILES
作为先决条件。你所做的似乎是成分 - 首先,但test
是目标。向后工作是make
最擅长的。您可能会受益于一篇名为“Auto-Dependency Generation”的文章,该文章采用相反的方法(您似乎像我一样思考。)
test: $(FILES)
然后你可以做类似以下的事情:
$(FILES:.o:.c): %.o: %.c
$(CC) -c -o $@ $<
第一部分是一组可能的目标,对应于源列表的对象列表,第二部分是特定但无名的对象(它将采用相应源的名称。)稍后,目标,例如test
,可以是您的可执行文件的名称,将这些对象作为依赖项和静态链接的对象。出于我的目的,我通常使用共享库,但这与手头的问题无关。
编辑:未经测试,如果出现问题将进行修改