2009-11-25 123 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