[英]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.