2011-07-26 18 views
6

क्या बढ़ावा देने के लिए आवश्यक शीर्षलेख फ़ाइलों की संख्या को कम करने का कोई तरीका है? आदर्श रूप में, मैं बूस्ट लोगों से अपने उत्पाद को छोटा बनाने का तरीका ढूंढने के लिए कह रहा हूं। लेकिन इस बीच, बूस्ट को शामिल करने का कोई तरीका है, लेकिन इसके साथ निपटने के लिए कई हज़ार हेडर फाइलें नहीं हैं?बूस्ट हेडर फ़ाइलों से निपटने

क्या एक "पैकेज" में हजारों शीर्षलेख फ़ाइलों को "बंडल" करने के लिए सी ++ तंत्र है और केवल उस फ़ाइल को स्रोत नियंत्रण में जांचें?

मुझे लगता है कि यहां समस्या स्रोत नियंत्रण है। एक diff करना, svn st और चेक आउट इन सभी फ़ाइलों के साथ सौदा करने के लिए इतना धीमा है।

+3

केवल पहले चेक इन/आउट धीमा है, सही है? मुझे संदेह है कि आप बूस्ट हेडर में महत्वपूर्ण बदलाव कर रहे हैं, इसलिए एक बार जब वे पहले चेकआउट पर डाउनलोड हो जाते हैं, तो बाद के चेकआउट को अद्यतन संस्करण प्राप्त करने की आवश्यकता नहीं होती है। यह माना जाता है कि आपका स्रोत नियंत्रण तंत्र अपेक्षाकृत सापेन है। – Chad

+2

चाड ने जो कहा, उसके अलावा, मैं तीसरे पक्ष के पुस्तकालयों में स्रोत नियंत्रण में जांच नहीं करता, जब तक कि मैं स्वयं कोड को संशोधित करने की योजना बना रहा हूं। इसके बजाय, बस लाइब्रेरी को संग्रहित करें, और संकलन के लिए इसे प्राप्त करने के तरीके पर अपनी परियोजना में निर्माण निर्देश शामिल करें। – Praetorian

+0

"सौदा" से आपका क्या मतलब है? मैंने पाया है कि precompiled शीर्षलेख फ़ाइलों का उपयोग कर एक असली लाइफवर हो सकता है, Boost.GIL का उपयोग करते समय 10+ सेकंड से एक छोटे से प्रोग्राम संकलन को दूसरे के एक अंश में तेज़ कर सकता है। –

उत्तर

9

बूस्ट BCP नामक एक उपकरण प्रदान करता है। बीसीपी आपको बढ़ावा देने के सबसेट निकालने की अनुमति देता है। यह आपके स्रोत पेड़ का विश्लेषण भी कर सकता है और केवल बूस्ट घटकों को निकाल सकता है जो आपके स्रोत पेड़ का उपयोग कर रहे हैं।

2

मैं आपकी तीसरी पार्टी पुस्तकालयों को एक अलग भंडार में रखने की सलाह दूंगा। बूस्ट टेम्पलेट भारी है, इसलिए उनके लिए एक अच्छा अच्छा कारण है कि वे अपने शीर्षकों को बंडल न करें। बंडल बूस्ट हेडर शामिल करने का प्रयास करने से आपके निर्माण समय से आपके "बर्बाद" समय को संस्करण नियंत्रण से स्थानांतरित कर दिया जाएगा। यह वास्तव में पैमाने पर नहीं है। यदि आप मेरे बूस्ट हेडर को ऐसा करने का प्रयास करते हैं तो मैं बूस्ट का उपयोग करने से इंकार कर दूंगा।

आपने पहले इसी तरह के प्रश्न पूछे थे, और मुझे लगता है कि मुझे अभी भी यकीन नहीं है कि तकनीकी बाधाओं के आसपास आप क्या करने की कोशिश कर रहे हैं।

0

एक फ़ाइल में सभी को पैकेज करने का कोई तरीका नहीं है (एक संग्रह को संस्करण को छोड़कर, लेकिन यह बहुत अच्छा अभ्यास नहीं है और न ही व्यावहारिक है)। एक तरफ ध्यान दें, सबवर्सन बूस्ट हेडर जैसे हजारों छोटी फाइलों की जांच में धीमा होने के लिए जाना जाता है, इसलिए हो सकता है कि आप गिट जैसे अधिक प्रदर्शन करने वाले एससीएम पर स्विच करने पर विचार कर सकें।

आपको bcp में रुचि होगी, जो एक बूस्ट टूल है जो आपके स्रोत का विश्लेषण करता है और आपके द्वारा उपयोग किए जाने वाले बूस्ट हेडर की एक अलग निर्देशिका में कॉपी करता है। इससे तीसरे पक्ष की फाइलों को कम करने में बहुत मदद मिली, और ज्यादातर मेरे मामले में सही था (बस सूची में कुछ जोड़ना था)।

0

आपने जो नहीं पूछा, लेकिन यहां आपको समस्या ठीक करने का एक तरीका है। जैसा कि मैं इसे समझता हूं, आप बूस्ट फ़ाइलों को अपने कोड नियंत्रण भंडार में जोड़ रहे हैं। क्यूं कर? वे आपकी परियोजना का हिस्सा नहीं हैं, वे आपके नियंत्रण के अंतर्गत नहीं हैं।

यहां बताया गया है कि मैं अपनी परियोजनाओं को कैसे ढूढ़ता हूं जैसे कि मैं उस तरह की समस्या में नहीं चलता हूं। सब कुछ स्रोत नियंत्रण में जोड़ा जाता है, को छोड़कर और lib फ़ोल्डर्स को नीचे उल्लिखित अनुसार शामिल किया गया है। (मैं सिर्फ अपने निर्देशिका वृक्ष के प्रासंगिक भागों को दिखाते हैं।)

  • /
    • src — मेरे अपने स्रोत फ़ाइलों और हेडर (जैसे बढ़ावा के रूप में)
    • ext — बाहरी निर्भरता
      • बढ़ावा शामिल -1-46-1
        • डाउनलोड करें।txt — लिंक आप से
        • शामिल — यह सही संस्करण डाउनलोड कर सकते हैं जहां स्रोत नियंत्रण
        • lib — में नहीं जोड़ा जाता शामिल हैं इस न
+0

"क्यों? वे आपकी परियोजना का हिस्सा नहीं हैं, वे आपके नियंत्रण में नहीं हैं।" ऐसा करने के कई कारण हैं। मैंने बाहरी मशीनों को संस्करण नियंत्रण के तहत रखा है ताकि अन्य मशीनों को वितरित करना आसान हो सके (केवल एक पुल पर और आपको जो चाहिए वह प्राप्त करें)। यह भी सुनिश्चित करता है कि अगर मैं किसी भी फाइल को गलती से बदलता हूं, तो मैं उन परिवर्तनों को पूर्ववत कर सकता हूं। और निश्चित रूप से, अगर मुझे एक बग ठीक करने की ज़रूरत है, तो यह पहले से ही संस्करण नियंत्रण में है। –

+3

यह सुनिश्चित करना कि सभी डेवलपर तृतीय पक्ष पुस्तकालयों के समान संस्करण पर हैं, यदि आप संशोधन नियंत्रण में सामान नहीं डालते हैं तो एक दुःस्वप्न है। –

+0

@ टॉम और निकोल: मैं मानता हूं कि मैंने पहले कभी एक टीम के साथ काम नहीं किया था और उत्तर उस परिप्रेक्ष्य से लिखा गया था। फिर भी, दो रिपोजिटरी रखना बेहतर नहीं होगा: आपके कोड के लिए एक और तृतीय पक्ष libs के लिए एक? –

1

ccache एक हो सकता है प्रीप्रोसेसर भारी संकलन को तेज करने के लिए जीवन बचतकर्ता।

संबंधित मुद्दे