ข้อเสนอแนะที่ดี? อินพุตจะเป็นชื่อของไฟล์ส่วนหัวและเอาต์พุตควรเป็นรายการ (ควรเป็นแผนผัง) ของไฟล์ทั้งหมดรวมถึงโดยตรงหรือโดยอ้อม
#include
พึ่งพาเช่นcpp-dependencies , iwyuและdep-matrixซึ่งเป็นเครื่องมือที่ไร้เดียงสาที่เขียนด้วยไพ ธ อน
ข้อเสนอแนะที่ดี? อินพุตจะเป็นชื่อของไฟล์ส่วนหัวและเอาต์พุตควรเป็นรายการ (ควรเป็นแผนผัง) ของไฟล์ทั้งหมดรวมถึงโดยตรงหรือโดยอ้อม
#include
พึ่งพาเช่นcpp-dependencies , iwyuและdep-matrixซึ่งเป็นเครื่องมือที่ไร้เดียงสาที่เขียนด้วยไพ ธ อน
คำตอบ:
หากคุณมีสิทธิ์เข้าถึง GCC / G ++ -M
ตัวเลือกจะแสดงรายการการพึ่งพา มันไม่ได้ทำสิ่งพิเศษใด ๆ ที่เครื่องมืออื่นทำ แต่เนื่องจากมาจากคอมไพเลอร์จึงไม่มีโอกาสที่จะรับไฟล์จากตำแหน่ง "ผิด"
-H
แม้แต่ให้ต้นไม้!
-MM
ข้ามส่วนหัวของระบบ
-o
ตัวเลือกที่คอมไพเลอร์จะเขียนผลลัพธ์ไปยังไฟล์แทน stdout
stderr
stdout
มิฉะนั้นตัวเลือกนี้จะกว้างขึ้น
ขอบคุณ KeithB ฉันค้นหาเอกสารสำหรับ cl.exe (VS2008) และพบแฟล็ก / showIncludes จาก IDE สามารถตั้งค่าได้จากหน้าคุณสมบัติของไฟล์ CPP ใด ๆ
math.h
สำหรับการแก้ปัญหาหนักคุณควรตรวจสอบDoxygen มันจะสแกนฐานรหัสของคุณและสร้างเว็บไซต์ที่มีประสิทธิภาพซึ่งเป็นเอกสารรหัสของคุณ สิ่งหนึ่งที่แสดงให้เห็นคือต้นไม้
หากคุณกำลังมองหาที่จะสามารถเสียบเอาท์พุทของเครื่องมือนี้เข้ากับกระบวนการอื่น ๆ ได้สิ่งนี้อาจไม่ได้ผลสำหรับคุณ (แม้ว่า doxygen จะส่งออกไปยังรูปแบบอื่น ๆ ฉันไม่คุ้นเคยกับคุณสมบัตินี้จริง ๆ ) หากคุณเพียงต้องการที่จะใช้อ้างอิงกับลูกตามันก็น่าจะใช้งานได้ดี
ผมเคยเล่นรอบกับเครื่องมือที่เรียกว่าcinclude2dot มันค่อนข้างมีประโยชน์ในการจัดการกับ codebase ที่ค่อนข้างใหญ่เมื่อฉันมาทำงานที่นี่ ฉันคิดเกี่ยวกับการรวมเข้ากับงานสร้างประจำวันของเราในที่สุด
.cc/.c/.cxx
ไฟล์ใด ๆในนั้น (เฉพาะ.h
ไฟล์ในนั้น) อาจซ้ำซ้อน
อันดับแรก cinclude2dot.pl เป็นสคริปต์ perl ซึ่งทำการวิเคราะห์รหัส C / C ++ และสร้างกราฟการพึ่งพา #include เป็นไฟล์ dot สำหรับป้อนข้อมูลลงใน graphviz
http://www.flourish.org/cinclude2dot/
หากคุณไม่ต้องการใช้เครื่องมือแมนนวลแบบนั้นผู้ชนะที่ไกล ๆ ก็คือเครื่องมือที่เรียกว่า "IncludeManager" จาก ProFactor
http://www.profactor.co.uk/includemanager.php
มีการทดลองใช้ฟรีและมันยอดเยี่ยม มันเป็นปลั๊กอินสำหรับ Visual Studio ที่รวมเข้าด้วยกันอย่างสมบูรณ์ดังนั้นการคลิกสองครั้งที่สิ่งที่นี่จะนำคุณไปยังสถานที่ที่รวมอยู่ที่นั่น
Tooltip mouseovers ให้ข้อมูลทั้งหมดที่คุณต้องการและมันช่วยให้คุณสามารถเจาะลึกลง / ขึ้นลบทรีย่อยทั้งหมดที่คุณไม่สนใจดูการแสดงอื่น ๆ นอกเหนือจากกราฟวนรอบรายการการแข่งขันสำหรับเรื่องนี้และมันยอดเยี่ยมมาก
หากคุณรวดเร็วเกี่ยวกับเรื่องนี้คุณสามารถปรับโครงสร้าง #include ของโครงการขนาดใหญ่ก่อนที่การทดลองจะหมด ถึงกระนั้นมันก็ไม่ได้มีค่าใช้จ่ายมากนักประมาณ $ 35 ต่อใบอนุญาต
สำหรับสิ่งที่มันทำมันเป็นเพียงที่สมบูรณ์แบบเกี่ยวกับ ไม่เพียง แต่ # กราฟรวมถึง แต่ยังข้ามการพึ่งพาโครงการของไฟล์ที่ใช้ร่วมกันส่งผลกระทบต่อเวลาสร้างคุณสมบัติรายละเอียดในกริดที่สมบูรณ์แบบ
ข่าวดี: redhat Source-Navigator (ทำงานบน Windows ด้วย) แน่นอนว่าคอมไพเลอร์สวิทช์ (ที่กล่าวถึงก่อนหน้านี้) มีการแยกวิเคราะห์ที่เหนือกว่าและฉันไม่แน่ใจว่าสิ่งนี้จะจัดการกับ MFC, Qt และคำหลักมหัศจรรย์ของพวกเขาได้อย่างไร
จากคำตอบของ KeithBนี่คือไวยากรณ์ของ GNU สร้างโดยอัตโนมัติ 1) สร้างไฟล์อ้างอิง 2) ทำให้ทันสมัยและ 3) ใช้ใน makefile ของคุณ:
.dep:
mkdir $@
.dep/%.dep: %.c .dep
(echo $@ \\; $(CC) $(IFLAGS) -MM $<) > $@ || (rm $@; false)
.dep/%.dep: %.cpp .dep
(echo $@ \\; $(CXX) $(IFLAGS) -MM $<) > $@ || (rm $@; false)
DEPEND := $(patsubst %.dep,.dep/%.dep,$(OBJ:.o=.dep))
-include $(DEPEND)
(ตรวจสอบให้แน่ใจว่าได้เปลี่ยนการเยื้องเป็นฮาร์ดแท็บ)
นอกจากนี้คุณยังสามารถดูmakedepend :
เข้าใจสำหรับ C ++ควรจะสามารถช่วยคุณ: มันสร้างฐานข้อมูลที่คุณสามารถเข้าถึงได้จาก Perl
cscope ( http://cscope.sourceforge.net/ ) ทำสิ่งนี้ใน xterm แบบสแตนด์อโลนและยังสามารถใช้ในโปรแกรมแก้ไขที่คุณชื่นชอบ - มันมี emacs และการสนับสนุน vi / vim ที่ยอดเยี่ยม