0

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

但我不确定这是否是正确的方法......

4

1 回答 1

0

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

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

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

如果您一开始不混合.c.h则无需将它们分开。

于 2013-02-09T11:12:40.197 回答