Visual Studio'da boş bir projede Boost kitaplığını kullanma hakkında iyi adım adım açıklama nedir?
Visual Studio'da boş bir projede Boost kitaplığını kullanma hakkında iyi adım adım açıklama nedir?
Yanıtlar:
İken Nate'in cevabı zaten oldukça iyidir, ben Visual Studio istendiği gibi 2010 daha özel Üzerinde genişletmek ve dış kütüphaneleri gerektirir çeşitli opsiyonel bileşenler derleme hakkında bilgi içerecek şekilde gidiyorum.
Yalnızca üstbilgi kitaplıkları kullanıyorsanız, tek yapmanız gereken boost yüklemesini arşivden çıkarmak ve ortam değişkenlerini ayarlamaktır. Aşağıdaki talimat, sistem genelinde bir bütün olarak değil, yalnızca Visual Studio için ortam değişkenlerini ayarlar. Sadece bir kez yapmanız gerektiğini unutmayın.
C:\boost_1_47_0
).Microsoft.Cpp.<Platform>.user
ve Properties
düzenlemek üzere Özellik Sayfasını açmak için seçin.VC++ Directories
Sol taraftan seçin .Include Directories
Destek kaynak dosyalarınızın yolunu eklemek için bölümü düzenleyin.Destek gerektiren bir yapı parçası kullanmak istiyor, ancak dış bağımlılık gerektiren özelliklerden hiçbirini kullanmak istemiyorsanız, bunu oluşturmak oldukça basittir.
C:\boost_1_47_0
).bootstrap.bat
b2.exe dosyasını oluşturmak için (önceden bjam olarak adlandırılmıştı).Koş b2:
b2 --toolset=msvc-10.0 --build-type=complete stage
:; b2 --toolset=msvc-10.0 --build-type=complete architecture=x86 address-model=64 stage
Yürüyüşe çıkın / film izleyin veya 2 / ....
Library Directories
Destek kitaplıkları çıktısına giden yolu dahil etmek için bölümü düzenleyin. (Yukarıdaki örnek ve talimatlar için varsayılan değer olacaktır C:\boost_1_47_0\stage\lib
. X86 ve x64'ü yan yana ( <BOOST_PATH>\lib\x86
& gibi <BOOST_PATH>\lib\x64
) istiyorsanız, önce dizini yeniden adlandırın ve taşıyın .İsteğe bağlı bileşenleri istiyorsanız, yapacak daha fazla işiniz vardır. Bunlar:
Iostreams Bzip2 filtreleri:
C:\bzip2-1.0.6
).-sBZIP2_SOURCE="C:\bzip2-1.0.6"
5. adımda b2'yi çalıştırırken seçeneği ekleyin .Iostreams Zlib filtreleri
C:\zlib-1.2.5
).-sZLIB_SOURCE="C:\zlib-1.2.5"
5. adımda b2'yi çalıştırırken seçeneği ekleyin .Boost.MPI
project-config.jam
dizindeki dosyayı düzenleyin <BOOST_PATH>
. Okunan bir satıra ekleyin using mpi ;
(';' öncesi boşluğa dikkat edin).Boost.Python
Kütüphanenin 32 bit sürümünü tamamen oluşturmak için 32 bit Python ve benzer şekilde 64 bit sürümü için gereklidir. Bu nedenle birden fazla sürümünüz varsa, b2'ye belirli sürümü nerede bulacağınızı ve hangisini kullanacağınızı söylemeniz gerekir. Bunu yapmanın bir yolu, önyükleme çalıştırmasıyla sonuçlanan project-config.jam
dizindeki dosyayı düzenlemek olacaktır <BOOST_PATH>
. Aşağıdaki iki satırı Python kurulum yollarınız ve sürümleriniz için uygun şekilde ayarlayarak ekleyin (';' öncesi boşluğa dikkat edin).
using python : 2.6 : C:\\Python\\Python26\\python ;
using python : 2.6 : C:\\Python\\Python26-x64\\python : : : <address-model>64 ;
Bu tür açık Python belirtiminin şu anda MPI derlemesinin başarısız olmasına neden olduğunu unutmayın. Bu nedenle, MPI oluşturuyorsanız her şeyi oluşturmak için spesifikasyonlu ve spesifik olmayan ayrı bir bina yapmanız gerekecektir.
Takviye oluşturmak için yukarıdaki ikinci talimat setini izleyin.
Regex ICU desteği
C:\icu4c-4_8
).<ICU_PATH>\source\allinone
.-sICU_PATH="C:\icu4c-4_8"
5. adımda b2'yi çalıştırırken seçeneği ekleyin .Boost web sitesindeki talimatlar yardımcı olsa da , burada x64 kitaplıkları oluşturan yoğun bir sürüm bulunmaktadır.
Bu, altındaki Boost başlık dosyalarını C:\Boost\include\boost-(version)
ve altındaki 32 bit kitaplıkları yükler C:\Boost\lib\i386
. Kitaplıklar için varsayılan konum olduğunu, C:\Boost\lib
ancak i386
birden çok mimariyi oluşturmayı planlıyorsanız, bunları bir dizinin altına koymak isteyeceğinizi unutmayın.
bootstrap
Çalıştırmak: 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)
Dahil etme yolunuza ekleyin .
C:\Boost\lib\i386
Kütüphanelerinize ekleyin .Bu, altındaki Boost başlık dosyalarını C:\Boost\include\boost-(version)
ve altındaki 64 bit kitaplıkları yükler C:\Boost\lib\x64
. Kitaplıklar için varsayılan konum olduğunu, C:\Boost\lib
ancak x64
birden çok mimariyi oluşturmayı planlıyorsanız, bunları bir dizinin altına koymak isteyeceğinizi unutmayın.
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)
Dahil etme yolunuza ekleyin .C:\Boost\lib\x64
Kütüphanelerinize ekleyin .Ayrıca, -j% NUMBER_OF_PROCESSORS% öğesini tüm çekirdeklerinizi kullanacağı bir argüman olarak deneyebilirsiniz. Dört çekirdekteki işleri çok hızlı hale getiriyor.
Aşağıdaki numarayı önerebilirim: Özel bir boost.props
dosya oluştur
Bu yordam, yalnızca açık bir şekilde eklemek istediğiniz projelerde artırmanın dahil edildiği değere sahiptir. Boost kullanan yeni bir projeniz olduğunda şunları yapın:
EDIT (@ jim-fred'deki düzenlemeyi takiben):
Ortaya çıkan boost.props
dosya şuna benzer ...
<?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>
Destek dizininin konumu için bir kullanıcı makrosu (bu durumda, D: \ boost_1_53_0) ve diğer iki parametre içerir: IncludePath ve LibraryPath. Bir deyim#include <boost/thread.hpp>
uygun dizinde thread.hpp dosyasını bulur (bu durumda D: \ boost_1_53_0 \ boost \ thread.hpp). 'Stage \ lib \' dizini, yüklü dizine bağlı olarak değişebilir.
Bu boost.props dosyası D:\boost_1_53_0\
dizinde bulunabilir.
Boost'un hangi kısımlarına ihtiyacınız var? Bir çok şey, Visual Studio ile birlikte gönderilen TR1'in bir parçasıdır, bu nedenle örneğin şunları söyleyebilirsiniz:
#include <tr1/memory>
using std::tr1::shared_ptr;
James'e göre, bunun da çalışması gerekir (C ++ 0x'de):
#include <memory>
using std::shared_ptr;
std
, C ++ 0x standardında olduğu gibi ad alanına taşınmıştır . ( std::tr1
Geriye dönük uyumluluk için muhtemelen isim alanında olduklarını düşünüyorum ).
Bu iş parçacığı bir süredir oldu ve özel donanımınızda mümkün olduğunca hızlı bir şekilde Boost oluşturmak için NASIL hakkında bir şeyler ekleyeceğimi düşündüm.
4 veya 6 çekirdekli sisteminiz varsa sırasıyla -j5 veya -j7 kullanın. Gerçekten çift çekirdekli olmadıkça standart yapı nor -j2 değil.
Ana istasyonumda 3930K (6 çekirdekli) stoklu bir Sandy Bridge Extreme çalıştırıyorum, ancak eski yedek kutusunda 2600k (4 çekirdekli) var ve trend N + ile en iyi Boost derleme sürelerini elde ediyorum 1, N'nin fiziksel çekirdek sayısı olduğu süreçler oluşturur. N + 2 azalan getiri noktasına ulaşır ve süreler artar.
Notlar: Hiper iş parçacığı etkin, 32 GB RAM DDR3, Samsung 840 EVO SSD.
6 çekirdekli -j7 (2 dakika ve 51 saniye) (Win7 Ultimate x64) (Visual Studio 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 çekirdekli j6 (3 dakika 2 saniye) (Win7 Ultimate x64) (Visual Studio 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
6 çekirdekli -j8 (3 dakika ve 17 saniye) (Win7 Ultimate x64) (Visual Studio 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
Yapılandırma
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-bit derlemenin biraz daha uzun sürdüğünü, bunlar için aynı karşılaştırmayı yapmam ve güncellemem gerektiğini unutmayın.
Destek dosyasını şuradan indirin: http://www.boost.org/users/download/ örn. Svn
Bundan sonra: cmd -> boost dizinine git ("D: \ boostTrunk" - burada paketi satın alır veya indirir ve çıkarırsınız): command: bootstrap
Biz ( "D: \ boostTrunk") olarak bjam.exe oluşturuldu: komutu: Bundan sonra bjam araç grubu = msvc-10.0 varyantı = ayıklama, salma parçacığı = çoklu bağlantı = statik (Biraz zaman alacak ~ 20dk.)
Bundan sonra: Visual Studio 2010'u açın -> boş proje oluştur -> proje özelliklerine git -> set:
Bu kodu yapıştırın ve çalışıp çalışmadığını kontrol edin?
#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;
}
Kaynaklar: https://www.youtube.com/watch?v=5AmwIwedTCM
İşte Boost'u nasıl kullanabildim:
Projenizi hatasız olarak inşa edebileceksiniz!
Burada bulunan Windows yükleyicileri benim için mükemmel çalıştı. Aşağıdaki adımları attım:
İyi şanslar!
KTC'nin çok bilgilendirici ana cevabına küçük bir katkı:
Ücretsiz Visual Studio c ++ 2010 Express kullanıyorsanız ve bunu 64 bit ikili dosyaları derlemeyi başarabildiyseniz ve şimdi bunu Boost libaries'in 64 bit sürümünü kullanmak için kullanmak istiyorsanız, 32- bit kitaplıkları (kilometreniz elbette değişebilir, ancak makinemde bu üzücü durumdur).
Aşağıdakileri kullanarak bunu düzeltebilirim: yukarıda açıklanan adımlar arasında
Ortamı ayarlamak için 'setenv' çağrısı ekledim. Bir sürüm derlemesi için yukarıdaki adımlar:
Bu bilgiyi burada buldum: http://boost.2283326.n4.nabble.com/64-bit-with-VS-Express-again-td3044258.html
Visual Studio'da başlamanızı sağlayacak minimalist bir örnek:
1. Boost'u buradan indirin ve açın.
Ayrı bir derleme gerektirmeyen örnek bir destek kitaplığı kullanarak bir Visual Studio boş projesi oluşturun:
#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;
}
Visual Studio proje özelliklerinizde Ek İçerme Dizinleri'ni ayarlayın:
Çok basit bir örnek için:
Visual Studio'da Boost Kitaplıkları Yükleme
Destek kitaplığının tamamını kullanmak istemiyorsanız, yalnızca bir alt küme:
Windows'ta yükseltme kitaplıklarının bir alt kümesini kullanma
Özellikle derleme gerektiren kütüphaneler hakkında özellikle bilgi almak istiyorsanız:
Ayrıca, çok yararlı bulduğum bir şey var. Yükseltme yollarınız için ortam değişkenlerini kullanın. (Windows'ta ortam değişkenleri nasıl ayarlanır, 7,8,10 için altta bağlantı) BOOST_ROOT değişkeni artık ortak bir yer gibi görünüyor ve artırmayı açtığınız kök yola ayarlanmış.
Sonra Özellikler, c ++, genel, Ek Include Dizinler kullanın $(BOOST_ROOT)
. Daha sonra, destek kitaplığının daha yeni bir sürümüne geçtiğinizde / ne zaman taşındığınızda, ortam değişkeninizi bu yeni sürüme işaret edecek şekilde güncelleyebilirsiniz. Daha fazla projeniz olarak, destek kullanın, hepsi için 'Ek Dahil Etme Dizinlerini' güncellemeniz gerekmeyecektir.
Ayrıca bir BOOST_LIB değişkeni oluşturabilir ve değişkenlerin yerleştirildiği yere yönlendirebilirsiniz. Aynı şekilde Bağlayıcı-> Ek Kütüphane Dizinleri için projeleri güncellemeniz gerekmez. Ben vs10 ile inşa bazı eski şeyler ve vs14 ile yeni şeyler böylece aynı klasöre boost lib her iki lezzet inşa var. Bir projeyi vs10'dan vs14'e taşırsam, yükseltme yollarını değiştirmem gerekmez.
NOT: Bir ortam değişkenini değiştirirseniz, aniden açık bir VS projesinde çalışmaz. VS değişkenleri başlangıçta yükler. Yani VS'yi kapatıp tekrar açmanız gerekecek.