비 재귀 적으로 컴파일하려는 여러 하위 디렉토리가있는 응용 프로그램이 있습니다. 이를 위해 하위 디렉토리의 모든 소스 파일을 여러 변수로 분리 한 다음 소스의 최종 콜렉션에서 사용합니다. 이런 식으로 뭔가 : Makefile.am에서 패턴을 대체하는 방법
GUI_SOURCEFILES = Gui/MainWindow.cc \
Gui/StatusBar.cc
...
foo_SOURCES = $(GUI_SOURCEFILES) \
$(DATABASE_SOURCEFILES) \
main.cc
지금 그러나이 모든 데이터베이스 파일의 앞에 모든 GUI 소스 파일에 대한
Gui/
및
Db\
를 작성하는 나를 강제로. 나는이 접두사 automaticall을 만드는 것이 가능해야한다고 생각하지만, 올바르게 이것을 할 수있는 방법을 찾을 수 없다.
GUI_SOURCEFILES = MainWindow.cc \
StatusBar.cc
...
foo_SOURCES = $(GUI_SOURCEFILES) \
$(patsubst %,Gui/%,$(DATABASE_SOURCEFILES)) \
main.cc
하지만 autotools를 전혀이 Makefile.am
를 컴파일되지 않습니다 : 나는 평소 메이크업 방법을 시도했다.
autotools에서이 작업을 수행 할 수있는 방법이 있습니까?
'$ (addprefix Gui /, $ (DATABASE_SOURCEFILES)) '는 어떻습니까? –
@dma_k : 이것은 같은 문제가있다 : src/Makefile.am : 12 : addprefix GUI /, $ (GUI_SOURCEFILES : 비 POSIX 변수 이름'src/Makefile.am : 12 : (아마 GNU make 확장)' .이 작업을 수행하는 매우 구체적인 autotools/m4 방법이 있어야한다고 생각하지만 위대한 확장 방법을 사용하지 못했습니다. 모든 Makefile 방법은 아마도 의문의 여지가 없습니다. – LiKao
@LiKao : 접미어 대체와 같은 일부 전통적인 메이크 파일 구문도 작동합니다. 그러나 나는 * 접두어 * 메소드를 모른다. – thiton