我想在xxx_SOURCES = ...
部分中的一个Makefile.am
文件中包含许多文件。有没有办法在那里使用典型的shell扩展?我正在寻找的是一个工作等效:Automake模式扩展
xxx_SOURCES = xxx.c $(top_builddir)/src/{aaa,bbb,ccc}.c
我想在xxx_SOURCES = ...
部分中的一个Makefile.am
文件中包含许多文件。有没有办法在那里使用典型的shell扩展?我正在寻找的是一个工作等效:Automake模式扩展
xxx_SOURCES = xxx.c $(top_builddir)/src/{aaa,bbb,ccc}.c
1)是没有办法做到这一点在便携式Make语法(Ephemient的答案只能与GNU Make一起使用) 2)使用Automake无法做到这一点。 (虽然功能不应该太硬的人谁需要它来实现......)
个人而言,我实在不明白的优势,使用
foo_SOURCES = subdir/{foo,bar,baz}.c
在
foo_SOURCES = \ subdir/foo.c \ subdir/bar.c \ subdir/baz.c
我发现前者更加神秘,而且不可理解(例如回答“哪个Makefile
提到foo.c
?”)。
我不知道这是否是最好的方式,但是这是我一直在做:
xxx_SOURCES = xxx.c $(shell echo $(top_builddir)/src/{aaa,bbb,ccc}.c)
很酷,但看起来像一个丑陋的黑客...我希望有人知道更好的解决方案:) – viraptor 2009-11-25 23:21:05
此解决方案只适用于GNU Make,并完全绕过automake的机制。 Automake将不知道被扩展的文件名(所以他无法在所有情况下生成适当的规则)。 – adl 2009-11-26 17:00:09