说我的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)
但我不确定这是否正确......
答案 0 :(得分:0)
我猜您的过滤器很好,但我宁愿单独定义.c
和.h
文件的列表,并在适当的地方使用这些列表:
CFILES=foo1.c foo2.c
HFILES=head1.h head2.h
foo: $(CFILES) $(HFILES)
gcc -o $@ $(CFILES)
如果您没有首先混合.c
和.h
,则无需在之后将它们分开。