2009-11-25 7 views
0

Makefile.am 파일에 xxx_SOURCES = ... 부분에 많은 파일을 포함하고 싶습니다. 거기에 일반적인 셸 확장을 사용할 수있는 방법이 있습니까? 내가 찾고위한 작업 동일합니다 : 그것은 최선의 방법인지 모르겠어요Automake 패턴 확장

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

답변

1

1)이 이식성있는 구문으로 할 수있는 방법이 없다. (ephemient의 대답은 GNU Make에서만 가능하다.) 2) Automake를 사용하는 방법은 없다.

가 개인적으로 정말

 
foo_SOURCES = \ 
    subdir/foo.c \ 
    subdir/bar.c \ 
    subdir/baz.c 

이상

 
foo_SOURCES = subdir/{foo,bar,baz}.c 

을 사용하는 이점을 볼 수 없습니다 (하지만이 기능은 ... 필요한 사람에 의해 구현하기 위해 너무 열심히 안) 나는 전자가 더 비밀스럽고 grepable하지 않다는 것을 안다. (예를 들어, "Makefilefoo.c을 언급한다."라는 질문에 답하는 것).

1

, 그러나 이것은 내가 항상 무슨 짓을했는지 있습니다 :

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

멋지지만 추한 해킹처럼 보입니다. 누군가가 더 나은 해결책을 알고 있기를 바랍니다. – viraptor

+0

이 솔루션은 GNU Make에서만 작동하며 automake의 메커니즘을 완전히 우회합니다. Automake는 확장되는 파일 이름에 대해 아무 것도 모릅니다 (그래서 모든 경우에 적절한 규칙을 생성 할 수 없습니다). – adl