migration - बूस्ट जैम क्या है और क्या जाम के लिए पलायन कर रहा है?




bjam build-system (3)

बूस्ट जैम क्या है और क्या जाम के लिए पलायन कर रहा है?

मुझे लगता है कि जाम प्रबल द्वारा निर्मित प्रणाली का निर्माण कर रहा है, लेकिन मुझे यकीन नहीं है कि कैसे बढ़ावा जाम और नियमित जैम अलग है

मैं यह भी उम्मीद कर रहा हूं कि ऐसे समुदाय में कोई हो सकता है जिन्होंने इसके साथ काम किया हो और शायद कुछ अंतर और / या लाभ को उजागर कर सकें।


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

बूस्ट कक्षाओं का एक संग्रह है और सी ++ के लिए फ़ंक्शन विभिन्न कार्यों के लिए उपयोगी है। कक्षाओं और बढ़ावा देने के कार्यों को पुस्तकालयों में बांटा गया है कुछ पुस्तकालयों में हेडर फाइल में उनका सभी कोड है, जिसे आप केवल #include preprocessor कथन का उपयोग करके उपयोग कर सकते हैं, जबकि अन्य (जैसे फाइल सिस्टम या रेगुलर एक्सप्रेशन पुस्तकालय) में उनके .cpp फ़ाइलों में कार्यान्वयन का हिस्सा है।

ये सीसीपी फाइलों को इकठ्ठा करने में उम्र लग सकती है (यह 30 मिनट की तरह है कि आप क्या संकलन कर रहे हैं) और यह एक वास्तविक दर्द होगा यदि हर बार जब आप अपने प्रोग्राम को पुनः कंपाइल करना चाहते हैं तो आधे घंटे लगे। तो उन्होंने जो कुछ किया है, उन पुस्तकालयों के लिए है जो आंशिक रूप से। सीपीपी फ़ाइलों में संग्रहीत हैं, आप उन्हें एक .lib फ़ाइल में precompile कर सकते हैं, और यह बढ़ावा जाम का उद्देश्य है। इसका मतलब है कि आपको केवल एक बार उन्हें इकट्ठा करने के लिए आधे घंटे बिताना होगा, और तब से आपको कभी आधे घंटे तक इंतजार नहीं करना पड़ेगा।

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

आप इस बात को देख सकते हैं कि पुस्तकालयों को जैम के जरिए संकलित किया जाना चाहिए और क्या पुस्तकालय इस पृष्ठ को देखकर ऐसा नहीं करते हैं: http://www.boost.org/doc/libs/1_37_0 - यदि कोई पुस्तकालय को एक लिब फाइल की ज़रूरत नहीं है ( और इसलिए आपको पहली बार बढ़ावा जाम के साथ गड़बड़ करने की आवश्यकता नहीं है), यह "बिल्ड और लिंक: हैडर केवल" कहेंगे, और अगर कोई लाइब्रेरी आपको किसी लिपि फाइल को प्रीकंपल करने की आवश्यकता करता है, तो यह "बिल्ड और लिंक: स्वचालित लिंकिंग" कहेंगे।

साथ ही, अगर आप Windows पर हैं, तो आप पूर्वकंपली हुई .lib फ़ाइलों को डाउनलोड कर सकते हैं, ताकि आपको कभी भी जाम का उपयोग न करें। इसे पाने के लिए, आपको क्या करना चाहिए www.boost.org पृष्ठ पर जाएं, प्रारंभ करना अनुभाग पर जाएं और इसे पूरी तरह से सुनिश्चित करें कि आपके पास सब कुछ सेटअप सही ढंग से है उस पेज के विंडोज़ संस्करण पर लिंक्स में से एक आपको कहता है कि precompiled .lib फाइलें कहां मिलेंगी।


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

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

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

दोष यह है कि सिंटैक्स बहुत ही नकचढ़ा है, और बढ़ावा वेबसाइट के बाहर, कोई अच्छा दस्तावेज नहीं है। लेकिन मैं सोचता हूँ कि Perforce जाम उस संबंध में उतना ही बुरा है।


मैं अपने क्रॉस-प्लेटफ़ॉर्म C ++ विकास के लिए बूस्ट जाम का उपयोग करता हूं। मैंने इसे चुना क्योंकि

  • मैं चाहता हूं कि मेरा कोड हर जगह बूस्ट बिल्ड बनाता है,
  • लक्ष्य निर्धारित करने के तरीके को निर्दिष्ट करने के लिए यह अपेक्षाकृत सरल घोषणात्मक भाषा का उपयोग करता है, और
  • यह आपके बायनेरिज़ के सभी अलग-अलग स्वादों (जैसे डिबग बनाम रिलीज, 32-बिट बनाम 64-बिट, एमएसवीसी बनाम जीसीसी) को एक ही आमंत्रण में बना सकता है, जिसमें बिल्ड घोषणाओं में स्वाद-संबंधित अपवादों का एक न्यूनतम न्यूनतम होता है।

आप प्रत्येक स्वाद क्रमचय के लिए अलग-अलग नियमों को लिखने के बजाय स्वाद-विशिष्ट सेटिंग के साथ सामान्य नियमों को परिष्कृत कर सकते हैं। सिंटैक्स बिल्कुल नहीं होता जो मैंने चुना होगा, लेकिन यह करने के लिए इस्तेमाल करने के लिए बहुत मुश्किल नहीं है।

यह पत्र सीमेट, सीन्स, और एक्लिप्स सीडीटी के बूस्ट जाम की तुलना करता है: http://syrcose.ispras.ru/2009/files/04_paper.pdf

मेरी समझ यह है कि बूस्ट जाम बूस्ट समुदाय द्वारा बनाए गए Perforce Jam का एक शाखा है, और यह कि Perforce Jam अब सक्रिय रूप से बनाए नहीं है ( रिलीज़ नोट्स को अप्रैल 2003 में अंतिम अपडेट है)

बेशक, यदि आप क्रॉस-प्लेटफॉर्म विकास की परवाह नहीं करते हैं, तो यहां जाने के लिए आसान उपाय हैं, जैसा कि दूसरों ने यहां बताया है। व्यक्तिगत रूप से, मैं ईलिपस सीडीटी को फिर से देखने का अर्थ रखता हूं; यह 5 साल पहले प्रयोग करने योग्य नहीं था, लेकिन मैंने सुना है कि यह एक लंबा रास्ता तय हुआ है।