जो मैं ढूंढ रहा हूं वह एक उपकरण है, जिसे रूट स्रोत फ़ाइल दी गई है, फ़ाइल निर्भरताओं का एक ग्राफ आउटपुट करता है (निश्चित रूप से, मिक्सडेपथ इत्यादि जैसे कुछ अनुकूलन में फेंक दिया जाता है)सी/सी ++ हेडर फ़ाइल निर्भरताओं को देखने के लिए ओपन-सोर्स टूल?
उत्तर
कई लोगों से पूछा गया समय पहले हमेशा एक ही जवाब - doxygen।
doxygen में फ़ाइल निर्भरताओं का एक ग्राफ है जो इसके कई आउटपुट में से एक है। यह वही नहीं हो सकता है जो आप चाहते हैं, लेकिन यह एक शुरुआत है।
मुझे पता है कि यह खुला स्रोत नहीं है (न ही लिनक्स, जिसे आप अपने प्रश्न में उल्लेख नहीं करते हैं लेकिन आपके टैग में हैं), लेकिन मुझे इस समस्या का सबसे अच्छा समाधान मिला है ProFactor IncludeManager - यह सबसे अच्छा था question I asked का उत्तर जो आपके प्रश्न का सटीक रूप से सही है, खुले स्रोत बिट को घटाएं (इसलिए मैंने आपके प्रश्न को मेरे एक डुप्ली के रूप में क्यों चिह्नित नहीं किया)।
बहुत कुछ लगता है उपयोगी उपकरण। डॉक्सिजन फ़ाइल समावेशन (विशेष रूप से निर्देशिका पेड़ों के बीच समावेशन) दिखाने के लिए काफी उपयोगी है, लेकिन आपको उनके प्रभाव का मूल्यांकन करने और असफल निर्भरताओं को हटाने के प्रभाव का विश्लेषण करने के लिए इस तरह के एक उपकरण की आवश्यकता है। –
अधीर, जो मेरी तरह, सिर्फ आदेशों की एक सूची चाहते हैं और :) RTFM नहीं तो आगे की हलचल के बिना के लिए (यह मानते हुए आप डेबियन, या उसके जैसे लोग है) ...
पहले, Doxygen स्थापित करें और Graphviz (जो `निर्देशित रेखांकन ड्राइंग के लिए डॉट 'प्रदान करता है):
apt-get install doxygen graphviz
इसके बाद, Doxygen बता एक प्रारंभिक कॉन्फ़िग फ़ाइल है कि हम तो हाथ से संशोधित कर सकते हैं उत्पन्न करने के लिए:
doxygen -g
इस का परिणाम देगा एक नई कॉन्फ़िगरेशन फ़ाइल, जिसे डॉक्सिफ़ाइल कहा जाता है, वर्तमान निर्देशिका में उत्पन्न होता है। फिर आप इसे अपने पसंदीदा टेक्स्ट एडिटर के साथ संशोधित कर सकते हैं। सुनिश्चित करें कि निर्दिष्ट मानों के लिए निम्न झंडे सेट करने के लिए सुनिश्चित करें:
HAVE_DOT = YES
RECURSIVE = YES
EXTRACT_ALL = YES
GENERATE_LATEX = NO # Unless you want LaTeX output besides the HTML ...
तुम भी Doxygen बता जहां प्रलेखन उत्पन्न करने के लिए (जो मूल रूप से एक निर्देशिका में आयोजित फ़ाइलों का सिर्फ एक गुच्छा है करने के लिए निम्न दो झंडे सेट कर सकते हैं संरचना): अब
cd foobar/src
doxygen ~/Doxyfile # Assuming you saved Doxyfile in your home directory.
, अगर आप भाग्यशाली हैं, तो आप अपने ब्राउज़र को कर सकते हैं:
PROJECT_NAME = Foobar
OUTPUT_DIRECTORY = /tmp/foobar/doc
कि सभी रहता है अपनी बात करने के लिए Doxygen बताने के लिए है फ़ाइल /tmp/foobar/doc/html/index.html पर, "फ़ाइलें" टैब का चयन करें, और उसके बाद दो अच्छे ग्राफ देखने के लिए हेडर फ़ाइल पर क्लिक करें: कोई दिखाता है कि कौन सी शीर्षलेख फ़ाइलें आपके हेडर फ़ाइल द्वारा सीधे शामिल की जाती हैं (सीधे या अप्रत्यक्ष रूप से), जबकि दूसरा दिखाता है कि अन्य फ़ाइलों में सीधे या अप्रत्यक्ष रूप से दी गई हेडर फ़ाइल शामिल है।
+1: आह, सुंदर जवाब। मैं बस फ़ाइल ग्राफ शामिल करने के लिए डॉक्सीजन का उपयोग करने की कोशिश कर रहा था और सोच रहा था कि यह क्यों काम नहीं करता - यह पता चला कि 'EXTRACT_ALL'' YES' पर सेट नहीं किया गया था। –
हाँ, यह दस्तावेज़ीकरण में इसका उल्लेख करता है, लेकिन मैनुअल के अनुसार, यह केवल "दस्तावेज" फ़ाइलों के लिए काम करता प्रतीत होता है। दूसरे शब्दों में, यदि आप इसे केवल स्रोत पेड़ पर चलाते हैं, तो यह ग्राफ उत्पन्न नहीं करेगा। किसी भी डॉक्सिजन विशेषज्ञ इस बिंदु पर झुकना चाहते हैं? –
आपको एक कॉन्फ़िगरेशन फ़ाइल बनाने की आवश्यकता है (या बेहतर है कि यह आपके लिए ऐसा करने के लिए डॉक्सिजन प्राप्त करें)। फिर आपको कुछ विशेषताओं को चालू करने के लिए फ़ाइल को संपादित करने की आवश्यकता है। मैं आम तौर पर पूरे पेड़ का उत्पादन नहीं करता, इसलिए मेरे हाथ में एक उदाहरण नहीं है। –
आप इसे अनियंत्रित सदस्यों को अनदेखा करने के लिए बुला रहे हैं। सही विकल्प दिए गए, डॉक्सीजन निश्चित रूप से सब कुछ पार्स कर सकते हैं। निम्नलिखित विकल्पों की जाँच करें: EXTRACT_ALL HIDE_UNDOC_MEMBERS HIDE_UNDOC_CLASSES तुम भी बिंदु (Graphviz के माध्यम से) की आवश्यकता हो सकती वर्ग चित्र और अन्य उपयोगी सामग्री उत्पन्न करने के लिए। –