Make:编译规则的.c文件



假设我的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)

但我不确定这是否是正确的方式。。。

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

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

如果一开始不混合.c.h,那么之后就没有必要将它们分离。

最新更新