0

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

任何建议将不胜感激。

提前致谢

4

0 回答 0