我有一個應用程序與幾個子目錄,我想要編譯非遞歸。爲此,我將子目錄中的所有文件分成幾個變量,然後在最終的源代碼中使用。事情是這樣的:如何替換Makefile.am中的模式
GUI_SOURCEFILES = Gui/MainWindow.cc \
Gui/StatusBar.cc
...
foo_SOURCES = $(GUI_SOURCEFILES) \
$(DATABASE_SOURCEFILES) \
main.cc
但是現在這迫使我寫Gui/
所有GUI sourcefiles和Db\
在所有數據庫文件的前面。我認爲應該可以創建這個前綴automaticall,但我找不到一個方法來正確地做到這一點。我想通常讓路:
GUI_SOURCEFILES = MainWindow.cc \
StatusBar.cc
...
foo_SOURCES = $(GUI_SOURCEFILES) \
$(patsubst %,Gui/%,$(DATABASE_SOURCEFILES)) \
main.cc
但自動工具將無法編譯這個Makefile.am
可言。
有沒有辦法讓自動工具爲我做到這一點?
'$(addprefix Gui /,$(DATABASE_SOURCEFILES))''? – 2012-01-03 13:25:23
@dma_k:這有同樣的問題:'src/Makefile.am:12:addprefix Gui /,$(GUI_SOURCEFILES:非POSIX變量名'src/Makefile.am:12 :(可能是一個GNU make擴展)' 。我認爲必須有一個非常具體的autotools/m4方法來做到這一點,但是我從來沒有用過很大的擴展。所有的Makefile方式都可能沒有問題。 – LiKao 2012-01-03 13:55:54
@LiKao:一些傳統的makefile結構像後綴替換也可以工作在automake。但是,我不知道一個*前綴*的方法。 – thiton 2012-01-03 14:23:47