我怎麼能讓 gmake 給我所有包含的 makefile 的清單?

我怎麼能讓 gmake 給我所有包含的 makefile 的清單?

我繼承了一個混亂的 makefile 網絡,它本身是從另一個專案繼承的,到處都包含 makefile。我試著做一個簡單的改變,而不破壞整件事情(雖然這很誘人,但我現在沒有時間)。

有什麼辦法可以從 gmake 中得到完整的 makefile,IE,所有包含的文件都已包含在內?我知道如何轉儲資料庫,但這與加載的所有無關垃圾一樣難以遵循。

答案1

翻拍有一些非常有趣的調試輸出。

答案2

您正在尋找的內容相當於cc -Efor make。我不知道有這樣的等價物。使用外部工具在許多情況下會有所幫助,但並非所有情況下,由於二次擴張

但也許這可能會讓你更接近一步。在初始 Makefile 的末尾,新增以下規則:

.PHONY: printMakefiles
printMakefiles:
        echo $(MAKEFILE_LIST)

現在您可以透過執行來找出包含哪些 Makefiles

make printMakefiles

請注意,這不是 100% 可靠,因為可能存在條件包含。

答案3

不確定這是否遞歸地起作用,但是像這樣的東西呢:

strace -e trace=open make | grep -i makefile

答案4

Makefile編輯您正在呼叫的main 。在末尾添加此行(或至少include在文件中出現的最後一行之後):

$(info MAKEFILE_LIST == $(MAKEFILE_LIST))

現在,當您執行make該檔案時Makefile,它會在分派規則之前轉儲所包含檔案的清單。

相關內容