Makefile:无限期运行的递归宏调用

时间:2013-02-04 13:35:19

标签: makefile

我正在尝试创建一个创建自定义文件系统的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中调用它。

任何建议都会非常感激。

提前致谢

0 个答案:

没有答案