有什麼好的建議?輸入將是頭文件的名稱,輸出應該是所有文件的列表(最好是樹),包括它直接或間接。跟蹤#包括依賴關係的工具
回答
如果您有權訪問GCC/G ++,那麼-M
option將輸出相關性列表。它不會執行其他工具所做的任何其他工作,但由於它來自編譯器,因此它不可能從「錯誤」的地方拾取文件。
對於重量級的解決方案,您應該查看Doxygen。它掃描你的代碼庫,並且有效地提供一個網站,它記錄你的代碼。它顯示的許多事情之一是包括樹木。
如果您希望能夠將此工具的輸出插入其他進程,那麼這可能對您無效(儘管Doxygen輸出爲其他格式,但我並不熟悉該功能)。但是,如果你只是想要注視依賴關係,它應該很好。
我玩過一個名爲cinclude2dot的工具。當我來這裏工作時,在處理相當大的代碼庫時非常有用。我其實已經考慮過將它整合到我們的日常構建中。
Understand for C++應該能夠幫助你:它建立一個你可以從Perl訪問的數據庫。
感謝KeithB。我查找了cl.exe文件(VS2008)並找到/ showIncludes標誌。在IDE中,可以從任何CPP文件的屬性頁面中進行設置。
好消息:redhat Source-Navigator(在Windows上運行過)。當然,編譯器開關(前面提到)具有更好的解析功能,我不確定這將如何處理MFC,Qt及其魔術關鍵字。
的cscope(http://cscope.sourceforge.net/)這是否在一個獨立的xterm,而且還可以將喜歡的編輯器內部使用 - 它有很大的Emacs和vi/vim的支持。
大廈KeithB's answer,這裏是gnumake的語法自動1)生成依賴文件,2)讓他們最新的,和3)使用它們在你的Makefile:
.dep:
mkdir [email protected]
.dep/%.dep: %.c .dep
(echo [email protected] \\; $(CC) $(IFLAGS) -MM $<) > [email protected] || (rm [email protected]; false)
.dep/%.dep: %.cpp .dep
(echo [email protected] \\; $(CXX) $(IFLAGS) -MM $<) > [email protected] || (rm [email protected]; false)
DEPEND := $(patsubst %.dep,.dep/%.dep,$(OBJ:.o=.dep))
-include $(DEPEND)
(請務必更改)
首先,cinclude2dot.pl是一個perl腳本,用於分析C/C++代碼並生成#include依賴關係圖作爲點文件以輸入到graphviz中。
http://www.flourish.org/cinclude2dot/
如果你不想去那種手工工具的方式,那麼目前的贏家雙手向下在我看來是被稱爲從ProFactor「IncludeManager」的工具。
http://www.profactor.co.uk/includemanager.php
有一個免費試用,這是真棒。它是Visual Studio的一個插件,它完全集成了,所以雙擊這裏的某些東西就可以將它帶到它所在的地方。
工具提示鼠標懸停可爲您提供所需的所有信息,它可讓您向下鑽取/向上鑽取,移除您不關心的整個子樹,查看圖表以外的表示,循環瀏覽匹配列表以及,這太棒了。
如果您對此有所瞭解,可以在試用結束之前重構大型項目的#include結構。即便如此,它的成本並不高,大約每個許可證35美元。
它的功能就是完美。不僅包括#include圖表,還可以交叉共享文件的項目依賴關係,影響構建時間,網格中的詳細屬性,完美。
- 1. 如何跟蹤系統依賴關係?
- 2. 如何跟蹤COM/ActiveX依賴關係?
- 3. 如何跟蹤node.js依賴關係?
- 4. 依賴關係跟蹤功能
- 5. Jersey Endpoint + OSGi依賴關係,跟蹤
- 6. Clutter工具包依賴關係 - Ubuntu 11.04
- 7. 類依賴關係工具
- 8. 經典ASP:跟蹤工具包括?
- 9. 在開發工具中跟蹤由「其他」發起的依賴關係
- 10. Gradle不包括測試依賴關係
- 11. Maven測試jar包括依賴關係
- 12. maven:不包括模塊依賴關係
- 13. sbt-assembly不包括依賴關係
- 14. 依賴項的依賴關係不包括在內
- 15. 貓鼬包括具有依賴關係的模型
- 16. 跟蹤系統之間的依賴關係
- 17. java依賴關係分析工具
- 18. 結構圖 - 具有依賴關係的安裝依賴關係
- 19. mvn依賴關係:具有傳遞性依賴關係的樹
- 20. C++:依賴跟蹤工具(逆向工程)
- 21. 不同開發平臺之間的依賴關係跟蹤
- 22. automake對非標準C++後綴的依賴關係跟蹤
- 23. 跟蹤Excel中的任務依賴關係
- 24. 如何跟蹤maven2中的插件依賴關係?
- 25. 爲什麼STS/m2eclipse不能跟蹤我的Maven依賴關係?
- 26. 通過ASM跟蹤方法的依賴關係
- 27. 依賴關係的nuget依賴關係
- 28. GNU autotools包含CUDA的文件依賴關係跟蹤(.deps目錄)
- 29. Redgate的SQL依賴關係跟蹤器不顯示某些數據庫的依賴關係...爲什麼?
- 30. Maven包不包括所有依賴關係的JAR
這是類似的(但不是複印件)http://stackoverflow.com/questions/74326/how-should-i-detect-unnecessary-include-files- in-a-large-c-project – 2013-10-09 17:36:22
這不是關於「最喜歡的」包含在gcc中很好地顯示,但msvs不包含。所以我們(我)正在尋找任何工具。 – fantastory 2014-10-13 08:07:59
爲什麼我一直在尋找「離題」問題有幫助? – jfritz42 2015-09-30 16:08:39