以下是如何在每個子目錄列表中按順序包含rules.mk
makefile,並使變量DIR
等於每個rules.mk
中的子目錄。我使用變量名DIR
,而不是dir
,因爲我相信makefile中的「全局」變量名應該是大寫的。
對於非遞歸makefile文件的其他實現細節,請諮詢
evbergen.home.xs4all.nl/nonrecursive-make.html
# include the makefile $2/rules.mk
# and make the variable $1 be equal to the directory $2, inside that makefile
define INCLUDE_DIR
$1 := $2
include $$($1)/rules.mk
endef
# do INCLUDE_DIR for directory variable name $1 and directories $2
define INCLUDE_DIRS
$(foreach dir, $2, $(eval $(call INCLUDE_DIR,$1, $(dir))))
endef
DIRS := \
$(ROOT)/libs/libA \
$(ROOT)/libs/libB \
$(call INCLUDE_DIRS,DIR, $(DIRS))
我問你在另一篇文章,閱讀紙。 http://evbergen.home.xs4all.nl/nonrecursive-make.html它會回答很多,如果不是所有的問題。這是一篇很好的論文。我多次成功實施並擴展了本文的想法。有用。你讀過它,發現它不夠? – 2014-09-29 19:11:02
@MarkGaleck - 我已經多次閱讀過,並且正在建立一些基於它的東西......這是一種需要的格式。我只是想簡化這一部分,這是不行的。 – Barry 2014-09-29 19:23:17
好吧,我明白了。恕我直言,你可能會發現,你不能簡化這篇論文,因爲如果你正在構建一個大系統,最終你將需要它的所有元素。所以你不妨從一開始就實施它。例如,那裏有一個「目錄堆棧」。你現在可能不需要它,但是如果你想做遞歸包含,你將需要它。當然你需要遞歸包含。您無法脫離一個級別,就像無法脫離具有一級目錄的文件系統一樣。 – 2014-09-29 19:47:05