2009-10-01 12 views
9

संभव डुप्लिकेट:
Building a subset of boost in windowsमैं केवल एक बूस्ट लाइब्रेरी/फ़ाइल का उपयोग कैसे कर सकता हूं?

मैं C++ 6.0 दृश्य का उपयोग कर रहा है, और मैं boost::random उपयोग करना चाहते हैं। मुझे कोई उदाहरण नहीं मिल रहा है कि मैं इस पुस्तकालय का उपयोग करने के बारे में कैसे जाउंगा। क्या मैं इसे अपने स्रोत में शामिल कर सकता हूं?

+0

डुप्लिकेट? http://stackoverflow.com/questions/439402/building-a-subset-of-boost-in-windows – Jacob

उत्तर

1

हां, अधिकांश बूस्ट लाइब्रेरी केवल शीर्षलेख हैं इसलिए आपको किसी भी स्रोत फ़ाइलों को संकलित करने की आवश्यकता नहीं है।

2

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

1

हां, boost::random का उपयोग करने के लिए, आप बस अपनी स्रोत फ़ाइल में शीर्षलेख शामिल कर सकते हैं।

चूंकि बूस्ट बड़े पैमाने पर टेम्पलेट का उपयोग करता है, इसलिए कई पुस्तकालयों को पूरी तरह से शीर्षकों (और टेम्पलेट कार्यान्वयन फ़ाइलों, एक ला txx) में लागू किया जाता है।

अधिकांश पुस्तकालय भी स्वतंत्र हैं, इसलिए आप किसी अन्य के आधार पर केवल एक का उपयोग कर सकते हैं। (अपवाद दस्तावेज हैं।)

यदि आप list of Boost libraries पर देखते हैं तो आप उनमें से कई को "हेडर केवल" लेबल करेंगे, इसलिए इसके खिलाफ लिंक करने के लिए कोई अतिरिक्त लाइब्रेरी नहीं है।

7

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

मेरे वर्तमान परियोजना इस पथ शामिल किया गया है:

/I "C:\Program Files\boost\boost_1_39" 

मेरे कोड तो इस तरह बढ़ावा हेडर है:

#include <boost/random.hpp> 

बढ़ावा/random.hpp # शामिल की तरह लाइनों का एक समूह है " बूस्ट/यादृच्छिक/linear_congruential.hpp ", यही कारण है कि आपको पथ शामिल करने की आवश्यकता है।

0

कैसे मैं सिर्फ यह और केवल इस लाइब्रेरी का उपयोग कर के बारे में जाना होगा

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

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

22

बूस्ट को bcp नामक एक बहुत अच्छा टूल मिला जो आप चाहते हैं। इसकी जांच - पड़ताल करें।

डॉक्स से

:

bcp boost/regex.hpp /foo 

Copies boost/regex.hpp and all dependencies including the regex source code 
(in libs/regex/src) and build files (in libs/regex/build) to /foo. Does not 
copy the regex documentation, test, or example code. 
संबंधित मुद्दे

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