2009-11-25 86 views
0

我想在xxx_SOURCES = ...部分中的一个Makefile.am文件中包含许多文件。有没有办法在那里使用典型的shell扩展?我正在寻找的是一个工作等效:Automake模式扩展

xxx_SOURCES = xxx.c $(top_builddir)/src/{aaa,bbb,ccc}.c 

回答

1

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?”)。

1

我不知道这是否是最好的方式,但是这是我一直在做:

xxx_SOURCES = xxx.c $(shell echo $(top_builddir)/src/{aaa,bbb,ccc}.c) 
+0

很酷,但看起来像一个丑陋的黑客...我希望有人知道更好的解决方案:) – viraptor 2009-11-25 23:21:05

+0

此解决方案只适用于GNU Make,并完全绕过automake的机制。 Automake将不知道被扩展的文件名(所以他无法在所有情况下生成适当的规则)。 – adl 2009-11-26 17:00:09