我正在尝试创建一个创建自定义文件系统的Makefile,我的问题是复制其中的一些包。我需要处理一个包含我需要包含的所有包的目录,但每个包可能包含也可能不包含描述其依赖关系的文件。以下是我试图做的摘录:
PKGS_DIR := $(shell pwd)/packages
PKGS := $(wildcard $(PKGS_DIR)/*.pkg)
.PHONY: $(PKGS)
define getdeps
@if [ ! -f $(2)/$(1) ]; then \
echo $(1) >> $(BASE_DIR)/deplist.tmp; \
if [ -f $(PKGS_DIR)/$(1).dep ]; then \
depapps=`cat $(PKGS_DIR)/$(1).dep`; \
$(foreach depapp,$$depapps,\
$(call getdeps,$(depapp),$(BASE_DIR)/optional); \
) \
fi \
fi
endef
$(PKGS):
@echo processing $(notdir $@)
$(call getdeps,$(notdir $@),$(BASE_DIR)/optional)
使用此代码,我的makefile崩溃,因为它无限循环进入,我不明白为什么。 我的问题是:是否可以在宏定义中进行递归调用?有没有更好的方法来实现这个?也许最好使用shell脚本来实现它,并在makefile中调用它。
任何建议都会非常感激。
提前致谢