Solaris

列出用 gcc 編譯的項目使用的標頭檔以及層次結構

  • September 8, 2011

我目前有一個跨越兩個不同原始碼控制系統的 C++ 項目。在不將第一個系統的完整原始碼簽入到第二個系統的情況下,我計劃僅簽入建構的支持庫。我的問題是我需要來自第一個原始碼控制系統的標頭檔,我在第二個原始碼控制系統中使用這些標頭檔,以便我可以編譯。有沒有一種簡單的方法可以強制 gcc 輸出我在 Solaris 下編譯時使用的所有標頭檔的名稱?有沒有辦法生成標頭檔依賴關係的層次結構,以便我可以看到哪些文件包含哪些其他標頭檔?層次結構是否有可能知道#pragma 一次,因此依賴關係樹不包含未包含多次的重複項?

執行gcc -M以生成給定源文件使用的標頭檔列表,或gcc -MM省略系統標頭檔。輸出採用 makefile 格式,因為該選項旨在生成該源文件的建構依賴項。有一些方法可以調整輸出格式,請參閱 GCC 手冊中的可用預處理器選項。預設輸出如下所示:

foo.o: foo.c some_header.h ../include/other_header.h \
       ../../common/include/yet_another_header.h

這篇1992 年由 AT&T 研究人員撰寫的論文描述了一種工具“incl”,它可以為 C 文件執行此操作,但據我所知,“incl”從未出現在廣闊的世界中。

引用自:https://unix.stackexchange.com/questions/20316