没有什么可以为'所有'做

时间:2018-03-23 16:49:27

标签: makefile

我试图运行这个简单的makefile命令但得到错误 - '没有什么可以为'所有''

FILES = file1.c file2.c file3.c
all:test

test:
    for file in $(FILES);
        do
            echo $$file;
        done

1 个答案:

答案 0 :(得分:0)

目标test没有依赖关系,因此没有理由构建,目标all继承。它有说明,但应包括FILES作为先决条件。你所做的似乎是成分 - 首先,但test是目标。向后工作是make最擅长的。您可能会受益于一篇名为“Auto-Dependency Generation”的文章,该文章采用相反的方法(您似乎像我一样思考。)

test: $(FILES)

然后你可以做类似以下的事情:

$(FILES:.o:.c): %.o: %.c $(CC) -c -o $@ $<

第一部分是一组可能的目标,对应于源列表的对象列表,第二部分是特定但无名的对象(它将采用相应源的名称。)稍后,目标,例如test,可以是您的可执行文件的名称,将这些对象作为依赖项和静态链接的对象。出于我的目的,我通常使用共享库,但这与手头的问题无关。

编辑:未经测试,如果出现问题将进行修改