1

您好,我想为 3 个不同目录中的 3 个单独的 makefile 创建一个主文件。Makefiles 独立工作,但不是来自 mastermakefile(如下)。进入 A 目录后,我得到一个错误:make: Circular A <- A dependency drop. make: 'A' 是最新的。

PROG = A B C
TRGTS = A B C

$(PROG): $(TRGTS)

all: $(TRGTS)

A:
    cd ./A ; make a

B:
    cd ./B ; make b

C: 
    cd ./C ; make c

clean:
    / rm -f *.o *~
    cd ./A ; make clean
    cd ./B ; make clean
    cd ./C ; make clean
4

2 回答 2

2

以下代码与威廉回答的几乎相同,但没有使用“for”循环语句。

subdirs := A B C

.PHONY: all $(subdirs)

all: $(subdirs)

$(subdirs):
    $(MAKE) -C $@
于 2012-10-16T01:31:26.357 回答
0

我对 makefile 生疏了,并且肯定知道以下不是最佳答案。但它现在可能会有所帮助......

TARGETS = A B C

.phoney: all
all:
    @for subdir in $(TARGETS); do \
      $(MAKE) -C $$subdir all || exit 1; \
    done

请注意,缩进必须使用制表符,而不是空格

于 2012-10-16T00:06:49.377 回答