Visual Studio में किसी खाली प्रोजेक्ट में Boost लाइब्रेरी का उपयोग कैसे करें, इस बारे में चरणबद्ध तरीके से एक अच्छा कदम है?
Visual Studio में किसी खाली प्रोजेक्ट में Boost लाइब्रेरी का उपयोग कैसे करें, इस बारे में चरणबद्ध तरीके से एक अच्छा कदम है?
जवाबों:
हालांकि नैट का उत्तर पहले से ही बहुत अच्छा है, मैं अनुरोध के अनुसार विजुअल स्टूडियो 2010 के लिए विशेष रूप से इस पर विस्तार करने जा रहा हूं, और विभिन्न वैकल्पिक घटकों में संकलन की जानकारी शामिल करता हूं, जिसमें बाहरी पुस्तकालयों की आवश्यकता होती है।
यदि आप केवल पुस्तकालयों के हेडर का उपयोग कर रहे हैं, तो आपको बस इतना करना है कि बढ़ावा डाउनलोड को अनारकली करें और पर्यावरण चर को सेट करें। नीचे दिए गए निर्देश केवल Visual Studio के लिए पर्यावरण चर सेट करते हैं, और पूरे सिस्टम में नहीं। नोट आपको केवल एक बार करना है।
C:\boost_1_47_0
) की निर्देशिका में बढ़ावा देने के नवीनतम संस्करण (लेखन के रूप में 1.47.0) को अनारक्षित करें ।Microsoft.Cpp.<Platform>.user
चयन करें और दायाँ क्लिक करें , और चुनें Properties
।VC++ Directories
बाईं ओर का चयन करें ।Include Directories
अपने बूस्ट सोर्स फाइल्स में शामिल करने के लिए सेक्शन को एडिट करें ।यदि आप बढ़ावा देने वाले हिस्से का उपयोग करना चाहते हैं, जिसमें भवन की आवश्यकता होती है, लेकिन बाहरी निर्भरता की आवश्यकता वाली कोई भी विशेषता नहीं है, तो इसका निर्माण करना काफी सरल है।
C:\boost_1_47_0
) की निर्देशिका में बढ़ावा देने के नवीनतम संस्करण (लेखन के रूप में 1.47.0) को अनारक्षित करें ।bootstrap.bat
b2.exe (पहले नामित bjam) बनाने के लिए।भागो b2:
b2 --toolset=msvc-10.0 --build-type=complete stage
:; b2 --toolset=msvc-10.0 --build-type=complete architecture=x86 address-model=64 stage
टहलने जाएं / मूवी देखें या 2 /…।
Library Directories
अपने बूस्ट लाइब्रेरी आउटपुट के पथ को शामिल करने के लिए अनुभाग संपादित करें । (ऊपर दिए गए उदाहरण और निर्देशों के लिए डिफ़ॉल्ट होगा C:\boost_1_47_0\stage\lib
। यदि आप x86 & x64 को साइड में रखना चाहते हैं, तो पहले नाम बदलें और स्थानांतरित करें (जैसे <BOOST_PATH>\lib\x86
& <BOOST_PATH>\lib\x64
)।यदि आप वैकल्पिक घटक चाहते हैं, तो आपके पास करने के लिए अधिक काम है। य़े हैं:
Boost.IOStreams Bzip2 फ़िल्टर:
C:\bzip2-1.0.6
।-sBZIP2_SOURCE="C:\bzip2-1.0.6"
चरण 5 में b2 चलाते समय विकल्प में जोड़ें ।Boost.IOStreams Zlib फिल्टर
C:\zlib-1.2.5
)।-sZLIB_SOURCE="C:\zlib-1.2.5"
चरण 5 में b2 चलाते समय विकल्प में जोड़ें ।Boost.MPI
project-config.jam
को उस निर्देशिका में संपादित करें <BOOST_PATH>
जिसके परिणामस्वरूप बूटस्ट्रैप चल रहा है। पढ़ने वाली पंक्ति में जोड़ें using mpi ;
(';' से पहले के स्थान पर ध्यान दें)।Boost.Python
लाइब्रेरी के 32-बिट संस्करण को पूरी तरह से बनाने के लिए 32-बिट्स पायथन की आवश्यकता होती है, और इसी तरह 64-बिट्स संस्करण के लिए। यदि आपके पास ऐसे कारण के लिए कई संस्करण स्थापित हैं, तो आपको b2 को यह बताना होगा कि विशिष्ट संस्करण कहां और कब उपयोग करना है। ऐसा करने का एक तरीका project-config.jam
उस निर्देशिका में फ़ाइल को संपादित करना होगा <BOOST_PATH>
जो बूटस्ट्रैप चलाने से हुई थी। अपने पायथन इंस्टॉलेशन पथ और संस्करणों के लिए उपयुक्त दो पंक्तियों को एडजस्ट करें (''! 'से पहले स्पेस पर ध्यान दें)।
using python : 2.6 : C:\\Python\\Python26\\python ;
using python : 2.6 : C:\\Python\\Python26-x64\\python : : : <address-model>64 ;
ध्यान दें कि इस तरह के स्पष्ट पायथन विनिर्देश वर्तमान में MPI निर्माण को विफल करने का कारण बनते हैं। यदि आप MPI का निर्माण कर रहे हैं तो सब कुछ बनाने के लिए आपको विनिर्देशन के साथ और बिना कुछ अलग इमारत बनाने की आवश्यकता होगी।
बढ़ावा देने के लिए ऊपर दिए गए निर्देशों के दूसरे सेट का पालन करें।
Boost.Regex ICU सपोर्ट
C:\icu4c-4_8
) की निर्देशिका में ICU4C लाइब्रेरी के नवीनतम संस्करण (लेखन के 4.8) स्रोत फ़ाइल को अनारक्षित करें ।<ICU_PATH>\source\allinone
।-sICU_PATH="C:\icu4c-4_8"
चरण 5 में b2 चलाते समय विकल्प में जोड़ें ।जबकि बूस्ट वेब साइट पर दिए गए निर्देश सहायक हैं, यहाँ एक संघनित संस्करण है जो x64 पुस्तकालयों का निर्माण भी करता है।
इसके तहत बूस्ट हेडर फाइल्स C:\Boost\include\boost-(version)
, और 32-बिट लाइब्रेरियों को इनस्टॉल करता है C:\Boost\lib\i386
। ध्यान दें कि पुस्तकालयों के लिए डिफ़ॉल्ट स्थान है, C:\Boost\lib
लेकिन i386
अगर आप कई आर्किटेक्चर के लिए योजना बनाते हैं, तो आप उन्हें एक निर्देशिका के तहत रखना चाहेंगे ।
bootstrap
Daud: b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\i386 install
toolset=msvc-11.0
toolset=msvc-10.0
toolset=msvc-14.1
जोड़ना C:\Boost\include\boost-(version)
अपने शामिल पथ में ।
C:\Boost\lib\i386
अपने कार्य पथ में ।इसके तहत बूस्ट हेडर फाइल्स C:\Boost\include\boost-(version)
, और 64-बिट लाइब्रेरीज़ के तहत इंस्टाल होता है C:\Boost\lib\x64
। ध्यान दें कि पुस्तकालयों के लिए डिफ़ॉल्ट स्थान है, C:\Boost\lib
लेकिन x64
अगर आप कई आर्किटेक्चर के लिए योजना बनाते हैं, तो आप उन्हें एक निर्देशिका के तहत रखना चाहेंगे ।
bootstrap
b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\x64 architecture=x86 address-model=64 install
toolset=msvc-11.0
toolset=msvc-10.0
C:\Boost\include\boost-(version)
अपने शामिल पथ में ।C:\Boost\lib\x64
अपने कार्य पथ में जोड़ें ।आप एक तर्क के रूप में -j% NUMBER_OF_PROCESSORS% को भी आज़मा सकते हैं, यह आपके सभी कोर का उपयोग करेगा। मेरे क्वाड कोर पर चीजों को सुपर फास्ट बनाता है।
मैं निम्नलिखित चाल की सिफारिश कर सकता हूं: एक विशेष boost.props
फ़ाइल बनाएं
इस प्रक्रिया का मूल्य है कि बढ़ावा केवल उन परियोजनाओं में शामिल है जहां आप इसे स्पष्ट रूप से शामिल करना चाहते हैं। जब आपके पास एक नया प्रोजेक्ट होता है जो बूस्ट का उपयोग करता है, तो:
EDIT (@ jim-fred से संपादित करें):
परिणामी boost.props
फ़ाइल कुछ इस तरह दिखती है ...
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros">
<BOOST_DIR>D:\boost_1_53_0\</BOOST_DIR>
</PropertyGroup>
<PropertyGroup>
<IncludePath>$(BOOST_DIR);$(IncludePath)</IncludePath>
<LibraryPath>$(BOOST_DIR)stage\lib\;$(LibraryPath)</LibraryPath>
</PropertyGroup>
</Project>
इसमें बूस्ट डायरेक्टरी (इस मामले में, D: \ boost_1_53_0) और दो अन्य मापदंडों के लिए एक उपयोगकर्ता मैक्रो होता है: इनपाथ और लाइब्रेरीपाथ। एक कथन #include <boost/thread.hpp>
उपयुक्त निर्देशिका में थ्रेड को ढूंढेगा (इस मामले में, D: \ boost_1_53_0 \ boost \ thread.hpp)। 'मंच \ lib \' निर्देशिका स्थापित निर्देशिका के आधार पर बदल सकती है।
यह boost.props फ़ाइल D:\boost_1_53_0\
निर्देशिका में स्थित हो सकती है ।
बूस्ट के किन हिस्सों की आपको ज़रूरत है? बहुत सारा सामान TR1 का हिस्सा है जिसे विज़ुअल स्टूडियो के साथ भेज दिया गया है, इसलिए आप उदाहरण के लिए कह सकते हैं:
#include <tr1/memory>
using std::tr1::shared_ptr;
जेम्स के अनुसार, यह भी काम करना चाहिए (C ++ 0x में):
#include <memory>
using std::shared_ptr;
std
नाम स्थान में स्थानांतरित कर दिया गया है , क्योंकि वे C ++ 0x मानक में हैं। (मुझे लगता है कि वे शायद std::tr1
नाम स्थान में भी हैं, पीछे की संगतता के लिए)।
यह धागा कुछ समय के लिए रहा है, और मुझे लगा कि मैं आपके विशिष्ट हार्डवेयर पर जितनी जल्दी हो सके बूस्ट बनाने के लिए HOW के बारे में कुछ जोड़ूंगा।
यदि आपके पास क्रमशः 4 या 6-कोर उपयोग -j5 या -j7 है। जब तक आप वास्तव में दोहरे कोर नहीं हैं निश्चित रूप से न तो मानक -j2 और न ही -j2।
मैं अपने मुख्य स्टेशन पर 3930K (6-कोर) वाले स्टॉक के साथ एक सैंडी ब्रिज एक्सट्रीम चला रहा हूं, लेकिन पुराने बैकअप बॉक्स पर 2600k (4-कोर) है, और प्रवृत्ति है कि मुझे N + के साथ सबसे अच्छा बूस्ट संकलन समय मिल रहा है 1 उन प्रक्रियाओं का निर्माण करता है जहां एन भौतिक कोर की संख्या है। N + 2 घटते हुए रिटर्न के बिंदु पर पहुंच जाता है और समय बढ़ जाता है।
नोट: हाइपरथ्रेडिंग सक्षम है, 32GB RAM DDR3, सैमसंग 840 EVO SSD।
-j7 पर 6-कोर (2 मिनट और 51 सेकंड) (Win7 अल्टीमेट x64) (विजुअल स्टूडियो 2013)
PS C:\Boost\boost_1_56_0> measure-command { .\b2 -j7 --build-type=complete msvc stage }
Days : 0
Hours : 0
Minutes : 2
Seconds : 51
Milliseconds : 128
Ticks : 1711281830
TotalDays : 0.0019806502662037
TotalHours : 0.0475356063888889
TotalMinutes : 2.85213638333333
TotalSeconds : 171.128183
TotalMilliseconds : 171128.183
-6 पर 6-कोर (3 मिनट और 2 सेकंड) (Win7 अल्टीमेट x64) (विजुअल स्टूडियो 2013)
PS C:\Boost\boost_1_56_0> measure-command { .\b2 -j6 --build-type=complete msvc stage }
Days : 0
Hours : 0
Minutes : 3
Seconds : 2
Milliseconds : 809
Ticks : 1828093904
TotalDays : 0.00211584942592593
TotalHours : 0.0507803862222222
TotalMinutes : 3.04682317333333
TotalSeconds : 182.8093904
TotalMilliseconds : 182809.3904
-j8 6-कोर (3 मिनट और 17 सेकंड) पर (Win7 अल्टीमेट x64) (विजुअल स्टूडियो 2013)
PS C:\Boost\boost_1_56_0> measure-command { .\b2 -j8 --build-type=complete msvc stage }
Days : 0
Hours : 0
Minutes : 3
Seconds : 17
Milliseconds : 652
Ticks : 1976523915
TotalDays : 0.00228764342013889
TotalHours : 0.0549034420833333
TotalMinutes : 3.294206525
TotalSeconds : 197.6523915
TotalMilliseconds : 197652.3915
कॉन्फ़िग
Building the Boost C++ Libraries.
Performing configuration checks
- 32-bit : yes (cached)
- arm : no (cached)
- mips1 : no (cached)
- power : no (cached)
- sparc : no (cached)
- x86 : yes (cached)
- has_icu builds : no (cached)
warning: Graph library does not contain MPI-based parallel components.
note: to enable them, add "using mpi ;" to your user-config.jam
- zlib : no (cached)
- iconv (libc) : no (cached)
- iconv (separate) : no (cached)
- icu : no (cached)
- icu (lib64) : no (cached)
- message-compiler : yes (cached)
- compiler-supports-ssse3 : yes (cached)
- compiler-supports-avx2 : yes (cached)
- gcc visibility : no (cached)
- long double support : yes (cached)
warning: skipping optional Message Passing Interface (MPI) library.
note: to enable MPI support, add "using mpi ;" to user-config.jam.
note: to suppress this message, pass "--without-mpi" to bjam.
note: otherwise, you can safely ignore this message.
- zlib : no (cached)
मैं ध्यान देता हूं कि 64-बिट बिल्ड थोड़ा अधिक समय लेता है, मुझे उन लोगों के लिए तुलना करने और अपडेट करने की आवश्यकता है।
बूस्ट डाउनलोड करें: http://www.boost.org/users/download/ जैसे svn द्वारा
उसके बाद: cmd -> बूस्ट डायरेक्टरी ("D: \ boostTrunk" पर जाएं - जहां आप चेकआउट या डाउनलोड और पैकेज निकालें): कमांड: बूटस्ट्रैप
हमने bjam ।
उसके बाद: विजुअल स्टूडियो 2010 खोलें -> खाली प्रोजेक्ट बनाएं -> प्रोजेक्ट प्रॉपर्टीज पर जाएं -> सेट:
इस कोड को पेस्ट करें और जांचें कि क्या यह काम कर रहा है?
#include <iostream>
#include <boost/shared_ptr.hpp>
#include <boost/regex.hpp>
using namespace std;
struct Hello
{
Hello(){
cout << "Hello constructor" << endl;
}
~Hello(){
cout << "Hello destructor" << endl;
cin.get();
}
};
int main(int argc, char**argv)
{
//Boost regex, compiled library
boost::regex regex("^(Hello|Bye) Boost$");
boost::cmatch helloMatches;
boost::regex_search("Hello Boost", helloMatches, regex);
cout << "The word between () is: " << helloMatches[1] << endl;
//Boost shared pointer, header only library
boost::shared_ptr<Hello> sharedHello(new Hello);
return 0;
}
यहाँ मैं बूस्ट का उपयोग करने में सक्षम था:
आप किसी भी त्रुटि के बिना अपनी परियोजना का निर्माण करने में सक्षम होंगे!
यहां स्थित विंडोज इंस्टॉलर ने मेरे लिए पूरी तरह से काम किया। मैंने निम्नलिखित कदम उठाए:
सौभाग्य!
KTC के बहुत जानकारीपूर्ण मुख्य उत्तर के लिए एक छोटा सा जोड़:
यदि आप मुक्त विज़ुअल स्टूडियो c ++ 2010 एक्सप्रेस का उपयोग कर रहे हैं, और 64-बिट बायनेरिज़ को संकलित करने के लिए एक प्राप्त करने में कामयाब रहे, और अब बूस्ट लिबरीज़ के 64-बिट संस्करण का उपयोग करने के लिए उपयोग करना चाहते हैं, तो आप 32- के साथ समाप्त हो सकते हैं बिट्स लाइब्रेरी (आपका माइलेज अलग-अलग हो सकता है, लेकिन मेरी मशीन पर यह सबसे दुखद मामला है)।
मैं इसे निम्नलिखित का उपयोग करके ठीक कर सकता हूं: जैसा कि ऊपर वर्णित चरणों को इनबिल्ट करें
मैंने पर्यावरण को सेट करने के लिए 'सेटेनव' पर कॉल डाला। रिलीज़ बिल्ड के लिए, उपरोक्त चरण बन जाते हैं:
मुझे यह जानकारी यहाँ मिली: http://boost.2283326.n4.nabble.com/64-bit-with-VS-Express-again-td3044258.html
विज़ुअल स्टूडियो में आपको आरंभ करने के लिए एक न्यूनतम उदाहरण:
1. यहाँ से डाउनलोड और अनज़िप बूस्ट।
2. एक दृश्य स्टूडियो खाली परियोजना बनाएँ, एक उदाहरण बढ़ावा पुस्तकालय है कि अलग संकलन की आवश्यकता नहीं है का उपयोग कर:
#include <iostream>
#include <boost/format.hpp>
using namespace std;
using namespace boost;
int main()
{
unsigned int arr[5] = { 0x05, 0x04, 0xAA, 0x0F, 0x0D };
cout << format("%02X-%02X-%02X-%02X-%02X")
% arr[0]
% arr[1]
% arr[2]
% arr[3]
% arr[4]
<< endl;
}
3. अपने दृश्य स्टूडियो परियोजना गुणों में अतिरिक्त शामिल निर्देशिकाएँ सेट करें:
एक बहुत ही सरल उदाहरण के लिए:
विजुअल स्टूडियो में बूस्ट लाइब्रेरी कैसे स्थापित करें
यदि आप संपूर्ण बूस्ट लाइब्रेरी का उपयोग नहीं करना चाहते हैं, तो बस एक सबसेट:
विंडोज में बूस्ट लाइब्रेरी के सबसेट का उपयोग करना
यदि आप विशेष रूप से उन पुस्तकालयों के बारे में जानना चाहते हैं जिन्हें संकलन की आवश्यकता है:
इसके अलावा, कुछ ऐसा है जो मुझे बहुत उपयोगी लगता है। अपने बढ़ावा देने के रास्तों के लिए पर्यावरण चर का उपयोग करें। (खिड़कियों में पर्यावरण चर कैसे सेट करें, 7,8,10 के लिए नीचे से लिंक करें) BOOST_ROOT चर अब सामान्य स्थान लगता है और रूट पथ पर सेट होता है जहां आप बढ़ावा देते हैं।
फिर गुण में, c ++, सामान्य, अतिरिक्त शामिल निर्देशिकाएँ का उपयोग करें $(BOOST_ROOT)
। यदि आप बूस्ट लाइब्रेरी के नए संस्करण में जाते हैं तो यदि आप इस नए संस्करण को इंगित करने के लिए अपने पर्यावरण चर को अपडेट कर सकते हैं। अपनी परियोजनाओं के अधिक के रूप में, आप सभी के लिए 'अतिरिक्त शामिल निर्देशिकाएँ' को अद्यतन करने के लिए नहीं होगा बढ़ावा देने का उपयोग करें।
आप एक BOOST_LIB वैरिएबल भी बना सकते हैं और इसे इंगित कर सकते हैं कि जहां लिबास का मंचन किया गया है। इसी तरह लिंकर के लिए-> अतिरिक्त पुस्तकालय निर्देशिकाएँ, आपको परियोजनाओं को अपडेट नहीं करना होगा। मेरे पास कुछ पुराने सामान vs10 के साथ और नए सामान vs14 के साथ बनाए गए हैं ताकि दोनों बूस्ट के फ्लेवर एक ही फ़ोल्डर में बने। इसलिए अगर मैं एक प्रोजेक्ट को vs10 से vs14 में ले जाऊं तो मुझे बूस्ट पाथ नहीं बदलना पड़ेगा।
नोट: यदि आप एक पर्यावरण चर को बदलते हैं तो यह अचानक खुले वीएस परियोजना में काम नहीं करेगा। वीएस स्टार्टअप पर चर लोड करता है। तो आपको वीएस को बंद करना होगा और इसे फिर से खोलना होगा।