2008-09-28 10 views
5

मेरे पास एक प्रोजेक्ट है जो मैं (स्कूल के लिए) पर काम कर रहा हूं कि मैं समाधान के लिए बूस्ट पुस्तकालयों में खुदाई कर रहा हूं। मुझे अपने आवेदन के साथ आवश्यक बूस्ट स्रोत कोड वितरित करने के लिए कुछ तरीका चाहिए ताकि इसे संकलन करने वाले सिस्टम पर स्थापित पुस्तकालयों के बिना संकलित किया जा सके। (विद्यालय कंप्यूटरों के बारे में कुछ भी आप उल्लेख कर सकते हैं। स्कूल ने पिछले साल सीवीएस स्थापित किया था। लेकिन उनके पास वीएस2005 है)सी ++ स्रोत (विजुअल स्टूडियो का उपयोग करके) के साथ प्रासंगिक बूस्ट पुस्तकालयों सहित

नोट: मैं Vista पर विजुअल स्टूडियो 2005 का उपयोग कर रहा हूं। मेरे सिस्टम पर मैंने 1.34.1 बूस्ट किया है मैंने automatic installer का उपयोग किया था। दस्तावेज जो मैंने पार किया है वह बीसीपी कमांड का उपयोग करने के बारे में कुछ कहता है लेकिन वह आदेश कुछ भी कॉपी नहीं करता है। (मैं बीसीपी को कॉल करने के लिए पूर्ण पथ का उपयोग कर रहा हूं, इसलिए मैं गलत कमांड को कॉल करना समाप्त नहीं करता हूं।)

संपादित करें: मैं RegEx पुस्तकालयों का उपयोग करने की कोशिश कर रहा हूं।

संपादित करें: आदेश मैं बीसीपी के लिए उपयोग कर रहा हूँ है: "c:\Program Files\boost\boost_1_34_1\bin\bcp.exe" boost/regex.hpp regex\

और यह देता है: no errors detected

+0

क्या आप कमांड को पोस्ट कर सकते हैं जिसे आपने बीसीपी चलाने के लिए उपयोग किया था? यह समस्या की पहचान करने में मदद कर सकता है। –

उत्तर

5

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

तो, आप यहां क्या करते हैं: आप बूस्ट को अपनी परियोजना सेटिंग्स (टूल-> विकल्प-> प्रोजेक्ट्स और समाधान-> vC++ निर्देशिका-> फ़ाइलों को शामिल करते हैं) से पथ शामिल करते हैं। संकलन करने की कोशिश करो। देखो जिसमें विफलता शामिल है। उस फ़ाइल को अपनी बूस्ट निर्देशिका से अपनी प्रोजेक्ट निर्देशिका में कॉपी करें। इसके बावजूद, कुल्ला, दोबारा दोहराएं जब तक कि आपकी परियोजना संकलित न हो जाए।

यदि आप ऐसी लाइब्रेरी का उपयोग कर रहे हैं जिसके लिए .cpp फ़ाइलों की आवश्यकता है, तो आपको लिंक समय पर एक त्रुटि मिलेगी। लाइब्रेरी की सभी .cpp फ़ाइलों को कॉपी करें जिन्हें आप अपनी प्रोजेक्ट निर्देशिका में उपयोग करते हैं और उन्हें अपने समाधान में जोड़ें। पुनर्निर्माण और उंगलियों को पार करें।

अधिक विस्तृत उत्तर के लिए, कृपया पोस्ट करें कि आप कौन सी लाइब्रेरी का उपयोग कर रहे हैं।

+0

मैं RegEx लाइब्रेरी का उपयोग कर रहा हूं। – epochwolf

0

मैं अपनी परियोजनाओं में वृद्धि को एम्बेड करने से पहले इस पर आया हूं। प्रत्येक व्यक्तिगत बूस्ट लाइब्रेरी विभिन्न मेक सिस्टम (जाम, मेक, विजुअल स्टूडियो 6 ...) के निर्माण के लिए विभिन्न परियोजना फाइलों के साथ आता है लेकिन वे वीएस के नए संस्करणों के साथ कभी भी महान नहीं होते हैं।

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

एक बार ऐसा करने के बाद, आप अपने प्रोजेक्ट में किसी अन्य फाइल की तरह बूस्ट लाइब्रेरी वितरित कर सकते हैं।

1

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

+0

वह कह रहा है कि यह एक स्कूल परियोजना के लिए है। जो लोग ग्रेड असाइनमेंट करते हैं वे परियोजनाओं के लिए पुस्तकालय स्थापित नहीं करेंगे, वे सभी अलग-अलग छात्रों के लिए इन पुस्तकालयों के साथ झुकाव के दिन बिताएंगे। असाइनमेंट आमतौर पर स्वयं निहित होने की आवश्यकता होती है। – Roel

+0

Roel यह सही है। मुझे पुस्तकालय को शेष स्रोत कोड के साथ एम्बेड करने की आवश्यकता है। – epochwolf

2

इस आदेश के साथ BCP कॉल करके देखें:

"c:\Program Files\boost\boost_1_34_1\bin\bcp.exe" --boost="c:\Program Files\boost\boost_1_34_1" regex regex 

--boost BCP जहां बढ़ावा स्थापित किया गया है बताता है, पहले regex, मॉड्यूल का नाम है दूसरा गंतव्य निर्देशिका है।

ओह, और यदि आपने पहले से ही ध्यान नहीं दिया है, तो libs\regex\build\ में दृश्य सी ++ मेकफ़ाइल हैं।

+0

धन्यवाद, कोशिश करेंगे। यदि इससे कोई फर्क पड़ता है, तो मैं मानक सी ++ का उपयोग कर रहा हूं, माइक्रोसॉफ्ट के विस्तार के लिए नहीं। – epochwolf

2

आपकी टिप्पणी के आधार पर कि आप रेगेक्स का उपयोग कर रहे हैं, तो आप यहां क्या करते हैं: 'सामान्य' बूस्ट वितरण ज़िप फ़ाइल डाउनलोड करें। इसे कहीं अनजिप करें। Libs/regex/src पर जाएं। उस निर्देशिका में सभी .cpp फ़ाइलों को अपनी प्रोजेक्ट निर्देशिका में कॉपी और पेस्ट करें। उन्हें अपने विजुअल स्टूडियो प्रोजेक्ट में जोड़ें (राइट-क्लिक करें, 'एड' -> 'मौजूदा आइटम')। फिर अपनी परियोजना निर्देशिका (उपनिर्देशिका सहित) में बूस्ट/रेगेक्स पर जाएं और वहां सब कुछ कॉपी करें (हेडर फाइल)। अपने सभी .cpp और .h फ़ाइलों में #include से "regex.hpp" में सभी शामिल करें ताकि इसमें आपकी स्थानीय निर्देशिका से शीर्षलेख शामिल हो और न कि सिस्टम-व्यापी स्थापित हो। सिस्टम-वाइड को अपने प्रोजेक्ट सेटिंग्स से पथ शामिल करना सुनिश्चित करें जैसे मैंने अपनी आखिरी पोस्ट में कहा था।

फिर, अपना कोड संकलित करें। आपको 'गायब फ़ाइल' त्रुटियों की एक संख्या मिल जाएगी क्योंकि रेगेक्स अन्य बूस्ट पुस्तकालयों पर निर्भर करता है। पूरी प्रक्रिया को दोहराएं: boost/xxx पर जाएं जहां xxx लाइब्रेरी है जिसे रेगेक्स ढूंढ रहा है। आप लाइब्रेरी को त्रुटि संदेश से घटा सकते हैं। संकलक जो आपकी खुद की प्रोजेक्ट निर्देशिका के लिए पूछता है उसे कॉपी करें। इससे पहले कि आप काम करता है, आपको अपनी निर्देशिका लेआउट के साथ थोड़ी सी चीज लगाना पड़ सकता है। यह वास्तव में एक कदम से कदम दृष्टिकोण है, जहां हर कदम एक जैसा है: गायब फ़ाइल की पहचान करें, इसे कॉपी करें, देखें कि इसमें शामिल है और तय है, और अगले चरण के साथ जारी रखें। यह उबाऊ काम है मुझे डर है।

आप यह सब बीसीपी के साथ स्वचालित कर सकते हैं लेकिन एक स्कूल परियोजना की तरह एक ऑफ-ऑफ परियोजना के लिए मैं परेशान नहीं होगा; केवल अगर आपको लगता है कि आपके पास भविष्य की परियोजनाएं होंगी जो आपको स्वयं निहित ज़िपफाइल देने की आवश्यकता होगी।

+0

मैं शायद भविष्य की परियोजनाओं में बूस्ट का उपयोग कर रहा हूं। प्रोफेसर दिमाग में नहीं है। – epochwolf

+0

आप इस तरह निर्भरताओं की खोज में सचमुच घंटों खर्च कर सकते हैं। [बीसीपी] (http://www.boost.org/doc/libs/1_46_1/tools/bcp/doc/html/index.html) ऐसा करने का एक और अधिक मूर्ख तरीका है। इसके अलावा, पथ शामिल करने के बजाय पथ शामिल करने के लिए बेहतर है - बूस्ट के कुछ सबसेट्स के लिए हजारों संपादित करने के लिए हजारों हैं। –

0

यह बढ़ावा देने के लिए ऐसा पिटा है; केवल प्रेरित छात्र ही ऐसा करने में सक्षम होंगे। क्या आपने इंस्टॉलर को बंडल करने पर विचार किया है?

+0

मैं वास्तव में बस पूर्व-संकलित डीबग पुस्तकालयों को उचित रिश्तेदार फ़ोल्डर में छोड़ देता हूं। – epochwolf

+0

मुझे उनकी वेबसाइट पर एक सेट मिला है: http://boost.teeks99.com – teeks99

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