ฉันอยู่ในกระบวนการเขียนการตั้งค่า CMake ดั้งเดิมเพื่อใช้คุณสมบัติที่ทันสมัยเช่นการเผยแพร่อัตโนมัติ (เช่นการใช้สิ่งต่าง ๆtarget_include_directories(<target> PUBLIC <dir>)
แทนinclude_directories(<dir>)
) ปัจจุบันเราจัดการข้อมูลการอ้างอิงโครงการทั้งหมดด้วยตนเองโดยการตั้งค่าคุณสมบัติของไดเรกทอรีทั่วโลก
ในการทดสอบของฉันฉันได้พบตัวอย่างเล็ก ๆ น้อย ๆ ที่เป้าหมายในการสร้างใหม่จะเชื่อมโยงไปยังห้องสมุดที่การสร้างเก่าจะไม่ ฉันไม่ได้เชื่อมโยงกับมันอย่างชัดเจนดังนั้นฉันจึงรู้ว่าสิ่งนี้มาจากการอ้างอิงของเป้าหมาย แต่เพื่อที่จะค้นหาว่าฉันควรจะดูว่าโครงการใดที่ฉันต้องทำซ้ำเพื่อCMakeLists.txt
ติดตามลำดับการพึ่งพาจนกระทั่งฉันพบ อันที่ดึงเข้าไปในห้องสมุดที่มีปัญหา เรามีห้องสมุดหลายสิบแห่งดังนั้นนี่จึงไม่ใช่กระบวนการที่ไม่สำคัญ
CMake ให้วิธีการใด ๆ ในการมองเห็นสำหรับแต่ละเป้าหมายการเพิ่มการอ้างอิงของมันอย่างชัดเจนและการแพร่กระจายใดผ่านการพึ่งพาสกรรมกริยาหรือไม่
ดูเหมือนว่า--graphviz
เอาต์พุตจะแสดงความแตกต่างนี้ดังนั้น CMake จึงรู้บริบทภายในอย่างชัดเจน อย่างไรก็ตามฉันต้องการเขียนtree
สคริปต์เหมือนเพื่อแสดงข้อมูลการพึ่งพาในบรรทัดคำสั่งและการแยกวิเคราะห์ไฟล์ Graphviz ดูเหมือนว่าทั้งฝันร้ายและแฮ็ค
เท่าที่ฉันสามารถบอกได้cmake-file-api
จะไม่รวมข้อมูลนี้ ฉันคิดว่าcodemodel/target/dependencies
สนามอาจใช้งานได้ แต่มันแสดงการพึ่งพาทั้งในระดับท้องถิ่นและสกรรมกริยารวมกัน และbacktrace
เขตข้อมูลของการอ้างอิงแต่ละครั้งจะผูกกลับไปที่add_executable
/ การadd_library
เรียกสำหรับเป้าหมายปัจจุบันเท่านั้น
--graphiz
ตัวเลือกที่ไม่ตอบคำถามของคุณหรือไม่ ทำไมการแยกไฟล์ dot ถึงรู้สึกเหมือนฝันร้าย? ไฟล์ Dot เป็นวิธีที่ง่ายที่สุดธรรมดาและยืดหยุ่นในการแสดงจุดเชื่อมต่อที่มนุษย์อ่านได้ ด้วยgvpr
ยูทิลิตี้คุณสามารถทำอะไรกับมันในสไตล์ awk-ish และคุณสามารถนำเข้ามันในภาษาอื่น ๆ เพราะเหตุใดไฟล์ dot ที่แสดงถึงโครงสร้างการพึ่งพาระหว่างต้นไม้อย่างแท้จริงไม่ใช่ "วิธีดู" สิ่งที่คุณถาม