2012-10-15 54 views
1

你好我想在3個不同的目錄中爲3個獨立的makefile創建一個主文件。 Makefiles是獨立工作的,但不是來自mastermakefile(如下)。進入A目錄後,出現以下錯誤:make:Circular A < - 刪除依賴關係。 make:`A'是最新的。master-makefile

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 
+0

PROG與TRGTS相同,但PROG取決於TRGTS - 是否合理? –

+0

不確定這是否正確 –

+0

'all'通常應該是makefile中的第一個目標。實際的第一個目標是'A';並且你說'通過確保A,B和C都是最新'來建立A ... –

回答

2

下面的代碼是威廉回答幾乎相同,但不使用「for」循環語句。

subdirs := A B C 

.PHONY: all $(subdirs) 

all: $(subdirs) 

$(subdirs): 
    $(MAKE) -C [email protected] 
0

我在生成文件上很生鏽,並且很確定地知道以下不是最好的答案。但它也可能幫助現在...

TARGETS = A B C 

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

注意縮進必須使用TAB,而不是空格

+0

我使用這個解決方案的乾淨目標,恭維Taizo伊藤的答案。 – SigmaX