1

こんにちは私は3つの異なるディレクトリに3つの別々のmakefileのマスターファイルを作成したいと思います。Makefileはそれ自体で機能しますが、mastermakefile(下記)からは機能しません。Aディレクトリに入った後、次のエラーが発生します。make:CircularA<-依存関係が削除されました。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

次のコードは、Williamが回答したものとほぼ同じですが、「for」ループステートメントを使用していません。

subdirs := A B C

.PHONY: all $(subdirs)

all: $(subdirs)

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

私はmakefilesに錆びており、次のことが最良の答えではないことを確かに知っています。しかし、それは今のところ役立つかもしれません...

TARGETS = A B C

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

インデントはスペースではなくTABを使用する必要があることに注意してください

于 2012-10-16T00:06:49.377 に答える