कोई अच्छा सुझाव? इनपुट एक हेडर फ़ाइल का नाम होगा और आउटपुट में प्रत्यक्ष या अप्रत्यक्ष रूप से सभी फाइलों की एक सूची (अधिमानतः एक पेड़) होनी चाहिए।
कोई अच्छा सुझाव? इनपुट एक हेडर फ़ाइल का नाम होगा और आउटपुट में प्रत्यक्ष या अप्रत्यक्ष रूप से सभी फाइलों की एक सूची (अधिमानतः एक पेड़) होनी चाहिए।
जवाबों:
यदि आपके पास GCC / G ++ तक पहुंच है, तो -M
विकल्प निर्भरता सूची को आउटपुट करेगा। यह किसी भी अतिरिक्त सामान को नहीं करता है जो अन्य उपकरण करते हैं, लेकिन चूंकि यह संकलक से आ रहा है, इसलिए कोई मौका नहीं है कि यह "गलत" जगह से फाइलें उठाएगा।
-H
एक पेड़ भी देता है!
-MM
स्किप सिस्टम हेडर
-o
विकल्प संकलक के साथ करने के लिए आउटपुट लिखने के बजाय stdout दर्ज करें।
stderr
इसके बजाय प्रिंट करता है stdout
। अन्यथा, यह विकल्प अधिक सामान्य है।
धन्यवाद केथबी को। मैंने cl.exe (VS2008) के लिए डॉक्स देखे और / showIncludes ध्वज पाया। आईडीई से, यह किसी भी सीपीपी फ़ाइल के संपत्ति पृष्ठ से सेट किया जा सकता है।
math.h
एक भारी वजन समाधान के लिए, आपको डॉक्सीजन की जांच करनी चाहिए । यह आपके कोड आधार के माध्यम से स्कैन करता है और प्रभावी रूप से एक वेबसाइट के साथ आता है, जो आपके कोड को दस्तावेज करता है। कई चीजों में से एक यह दिखाता है कि पेड़ शामिल हैं।
यदि आप इस उपकरण के आउटपुट को किसी अन्य प्रक्रिया में प्लग करने में सक्षम होना चाह रहे हैं, तो यह आपके लिए काम नहीं कर सकता है (हालाँकि doxygen अन्य प्रारूपों के लिए आउटपुट करता है, मैं उस सुविधा से परिचित नहीं हूं)। यदि आप बस निर्भरता को कम करना चाहते हैं, हालांकि, यह बहुत अच्छा काम करना चाहिए।
मैंने cinclude2dot नामक टूल के साथ खेला है । जब मैं यहाँ काम करने के लिए आया था तो एक बड़े कोडबेस पर एक हैंडल पाने में यह बहुत उपयोगी था। मैंने वास्तव में इसे हमारे दैनिक निर्माण में अंतत: एकीकृत करने के बारे में सोचा है।
.cc/.c/.cxx
फ़ाइल नहीं है (केवल .h
उसमें मौजूद फ़ाइलें) निरर्थक हो सकती हैं।
सबसे पहले, cinclude2dot.pl एक पर्ल स्क्रिप्ट है जो C / C ++ कोड का विश्लेषण करती है और ग्राफविज़ में इनपुट के लिए एक डॉट फ़ाइल के रूप में एक #include निर्भरता ग्राफ का उत्पादन करती है।
http://www.flourish.org/cinclude2dot/
यदि आप मैनुअल टूल के उस प्रकार के रास्ते पर नहीं जाना चाहते हैं, तो दूर विजेता द्वारा हैंड्स-डाउन मेरी राय में एक उपकरण है जिसे प्रोफ़ैक्टर से "इनकैममैन" के रूप में जाना जाता है।
http://www.profactor.co.uk/includemanager.php
एक नि: शुल्क परीक्षण है, और यह बहुत बढ़िया है। यह विज़ुअल स्टूडियो के लिए एक प्लग-इन है जो पूरी तरह से एकीकृत है इसलिए यहाँ पर किसी चीज़ पर डबल क्लिक करना आपको उस स्थान पर ले जाता है जहाँ इसे वहाँ शामिल किया गया है।
टूलटिप माउसओवर आपको वह सभी जानकारी देता है जो आप चाहते हैं, और यह आपको नीचे / ऊपर ड्रिल करने देता है, पूरे उपप्रकार हटा देता है जिसके बारे में आपको परवाह नहीं है, ग्राफ़ के अलावा अन्य अभ्यावेदन देखें, इसके लिए मैचों की एक सूची के माध्यम से साइकिल करें और यह, यह अद्भुत है।
यदि आप इसके बारे में जल्दी कर रहे हैं, तो आप परीक्षण शुरू होने से पहले एक बड़ी परियोजनाओं की #include संरचना को फिर से तैयार कर सकते हैं। फिर भी, यह बहुत अधिक खर्च नहीं करता है, लगभग $ 35 प्रति लाइसेंस।
यह क्या करता है के लिए, यह एकदम सही है। न केवल # अलग-अलग रेखांकन बल्कि साझा फ़ाइलों की परियोजना निर्भरता, बिल्ड समय पर प्रभाव, ग्रिड में विस्तृत गुण, परिपूर्ण।
खुशखबरी: redhat Source-Navigator (विंडोज पर भी चलता है)। बेशक, कंपाइलर स्विच (पहले उल्लिखित) में बेहतर पार्सिंग है और मुझे यकीन नहीं है कि यह एमएफसी, क्यूटी और उनके जादुई कीवर्ड को कैसे संभालेंगे।
कीथबी के उत्तर पर निर्माण , यहाँ GNUmake सिंटैक्स को स्वचालित रूप से 1) निर्भरता फ़ाइलों को उत्पन्न करता है, 2) उन्हें अद्यतित रखें, और 3) अपने मेकफाइल में उनका उपयोग करें:
.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 ++ के लिए समझें आपको मदद करने में सक्षम होना चाहिए: यह एक डेटाबेस बनाता है जिसे आप पर्ल से एक्सेस कर सकते हैं।
cscope ( http://cscope.sourceforge.net/ ) एक स्वसंपूर्ण xterm में ऐसा करता है, और इसे आपके पसंदीदा संपादक के अंदर भी उपयोग किया जा सकता है - इसमें महान emacs और vi / vim समर्थन है।