Make:编译规则的.c文件

时间:2013-02-09 10:07:20

标签: makefile

说我的Makefile中有以下规则:

foo: foo1.c foo2.c head1.h head2.h
    gcc -o $@ foo1.c foo2.c

正如您所看到的,在这种情况下 - 在大多数情况下 - 规则中的.c文件对应于传递给gcc的.c文件。我的问题是,是否有一个变量可以传递给Makefile,它将评估为“规则中的所有.c文件”?

就个人而言,我使用以下内容:

CFILES=$(filter %.c,$^)                                                        

foo: foo1.c foo2.c head1.h head2.h
    gcc -o $@ $(CFILES)

但我不确定这是否正确......

1 个答案:

答案 0 :(得分:0)

我猜您的过滤器很好,但我宁愿单独定义.c.h文件的列表,并在适当的地方使用这些列表:

CFILES=foo1.c foo2.c
HFILES=head1.h head2.h

foo: $(CFILES) $(HFILES)
        gcc -o $@ $(CFILES)

如果您没有首先混合.c.h,则无需在之后将它们分开。