我有文件和目錄的這樣的結構:定義在Makefile中
.
├── Makefile
└── packages
├── Makefile
└── subdir
└── Makefile
和頂層Makefile看起來是這樣的:
define aa
make -C $1 $2
endef
packages=$(shell find ./packages -type d)
p1=$(filter-out . .., $(packages))
all:
$(foreach f,$(p1),$(call aa,$(f),compile))
和Makefile文件都在./packages/和。/packages/subdir /具有「編譯」目標。
我試圖在「軟件包」子目錄中自動調用所有Makefiles,而無需將它們單獨添加到Makefile中。
當我運行make在頂級目錄我得到錯誤:
make -C ./packages compile make -C ./packages/subdir compile
make[1]: *** packages/subdir: No such file or directory. Stop.
Makefile:16: recipe for target 'all' failed
make: *** [all] Error 2
我想知道化妝的爲什麼都調用(這應該是獨立的調用)被放置在一條線?
當我在這樣的「AA」宏的末尾添加結束行:
define aa
make -C $1 $2
endef
一切正常。 我的問題是爲什麼沒有這個行結束這個宏不起作用?