ฉันอยู่ในกระบวนการเขียนการตั้งค่า 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 ที่แสดงถึงโครงสร้างการพึ่งพาระหว่างต้นไม้อย่างแท้จริงไม่ใช่ "วิธีดู" สิ่งที่คุณถาม