簡體   English   中英

Makefile:獲取目標先決條件的先決條件

[英]Makefile: get prerequisites of target prerequisites

是否有任何本機makefile(GNU make等)來獲取目標先決條件的先決條件? 這些問題與編譯器(例如g ++ -MM)從源文件進行的依賴關系檢查無關

在主題上找不到任何東西。 正如我所看到的,在這種情況下沒有特殊的變量。

為了說明問題,這是我從C ++源代碼到對象的編譯方法的定義,雖然很標准:

##### UNIVERSAL COMPILE #####
%.o: %.cpp %.hpp
   ${CC} ${CFLAGS} -c $< -o $@

然后,我需要構建非常大的依賴關系鏈:

a: a.o
b: b.o a.o
c: c.o b.o a.o
d: d.o c.o b.o a.o
etc, up to N times...

由於此鏈接配方,因此有必要:

##### UNIVERSAL LINK #####
%: %.o
   ${LN} ${LNFLAGS} $^ -o $@

如您所見,配方接受了所有提供的依賴關系 ,但是需要獲取所有提供的依賴關系的所有依賴關系

整個程序鏈接沒有問題,就像配方中那樣:

##### PROGRAM LINK ######
${BIN}: ${OBJ}
   ${LN} ${LNFLAGS} ${OBJ} -o ${BINDIR}/$@

但是我需要進行單元測試,並且單元之間相互依賴,並且子系統的測試層次結構很容易編寫為硬編碼的依賴鏈。

也許我做錯了嗎? 也許此鏈接配方還有其他選擇? 謝謝!

您做錯了方法。 為什么要聲明每次ao更改時都必須重新編譯bo (這是(在指定前提條件pf bo : ao ))? 那不是需要發生的事情,也沒有道理。

您需要列出所有目標文件作為單個可執行文件的先決條件,例如:

exe: a.o b.o c.o d.o ...

而已。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM