Câu trả lời:
Mặc dù câu trả lời của Nate khá tốt, tôi sẽ mở rộng cụ thể hơn cho Visual Studio 2010 theo yêu cầu và bao gồm thông tin về việc biên dịch trong các thành phần tùy chọn khác nhau cần có thư viện bên ngoài.
Nếu bạn đang sử dụng các thư viện chỉ tiêu đề, thì tất cả những gì bạn cần làm là hủy đăng ký tải xuống boost và thiết lập các biến môi trường. Hướng dẫn bên dưới chỉ đặt các biến môi trường cho Visual Studio chứ không phải trên toàn bộ hệ thống. Lưu ý bạn chỉ phải làm một lần.
C:\boost_1_47_0
).Microsoft.Cpp.<Platform>.user
và chọn Properties
để mở Trang thuộc tính để chỉnh sửa.VC++ Directories
bên trái.Include Directories
phần để bao gồm đường dẫn đến tệp nguồn tăng của bạn.Nếu bạn muốn sử dụng một phần của boost yêu cầu xây dựng, nhưng không có tính năng nào yêu cầu phụ thuộc bên ngoài, thì việc xây dựng nó khá đơn giản.
C:\boost_1_47_0
).bootstrap.bat
để xây dựng b2.exe (tên trước đây là bjam).Chạy b2:
b2 --toolset=msvc-10.0 --build-type=complete stage
; b2 --toolset=msvc-10.0 --build-type=complete architecture=x86 address-model=64 stage
Đi dạo / xem phim hoặc 2 / ....
Library Directories
phần để bao gồm đường dẫn đến đầu ra thư viện tăng của bạn. (Mặc định cho ví dụ và hướng dẫn ở trên sẽ là C:\boost_1_47_0\stage\lib
. Đổi tên và di chuyển thư mục trước nếu bạn muốn có x86 & x64 cạnh nhau (chẳng hạn như <BOOST_PATH>\lib\x86
& <BOOST_PATH>\lib\x64
).Nếu bạn muốn các thành phần tùy chọn, thì bạn có nhiều việc phải làm. Đó là:
Bộ lọc Boost.IOStreams Bzip2:
C:\bzip2-1.0.6
).-sBZIP2_SOURCE="C:\bzip2-1.0.6"
khi chạy b2 ở bước 5.Bộ lọc Zlib Boost.IOStreams
C:\zlib-1.2.5
).-sZLIB_SOURCE="C:\zlib-1.2.5"
khi chạy b2 ở bước 5.Tăng.MPI
project-config.jam
trong thư mục <BOOST_PATH>
kết quả từ việc chạy bootstrap. Thêm vào một dòng đọc using mpi ;
(lưu ý khoảng trắng trước dấu ';').Boost.Python
Để xây dựng hoàn toàn phiên bản 32 bit của thư viện cần có Python 32 bit và tương tự cho phiên bản 64 bit. Nếu bạn có nhiều phiên bản được cài đặt vì lý do đó, bạn sẽ cần cho b2 biết nơi tìm phiên bản cụ thể và khi nào nên sử dụng phiên bản nào. Một cách để làm điều đó là chỉnh sửa tệp project-config.jam
trong thư mục <BOOST_PATH>
do chạy bootstrap. Thêm vào hai dòng sau điều chỉnh cho phù hợp với các phiên bản & đường dẫn cài đặt Python của bạn (lưu ý khoảng trắng trước ';').
using python : 2.6 : C:\\Python\\Python26\\python ;
using python : 2.6 : C:\\Python\\Python26-x64\\python : : : <address-model>64 ;
Xin lưu ý rằng đặc tả Python rõ ràng như vậy hiện đang khiến việc xây dựng MPI không thành công. Vì vậy, bạn sẽ cần thực hiện một số tòa nhà riêng biệt có và không có thông số kỹ thuật để xây dựng mọi thứ nếu bạn cũng đang xây dựng MPI.
Thực hiện theo các hướng dẫn thứ hai ở trên để xây dựng boost.
Hỗ trợ Boost.Regex ICU
C:\icu4c-4_8
).<ICU_PATH>\source\allinone
.-sICU_PATH="C:\icu4c-4_8"
khi chạy b2 ở bước 5.Mặc dù các hướng dẫn trên trang web Boost rất hữu ích, đây là phiên bản thu gọn cũng xây dựng thư viện x64.
Thao tác này sẽ cài đặt các tệp tiêu đề Boost bên dưới C:\Boost\include\boost-(version)
và các thư viện 32 bit bên dưới C:\Boost\lib\i386
. Lưu ý rằng vị trí mặc định cho các thư viện là C:\Boost\lib
nhưng bạn sẽ muốn đặt chúng trong một i386
thư mục nếu bạn dự định xây dựng cho nhiều kiến trúc.
bootstrap
Chạy: 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
Thêm vào C:\Boost\include\boost-(version)
đường dẫn bao gồm của bạn.
C:\Boost\lib\i386
đường dẫn libs của bạn.Thao tác này sẽ cài đặt các tệp tiêu đề Boost bên dưới C:\Boost\include\boost-(version)
và các thư viện 64 bit bên dưới C:\Boost\lib\x64
. Lưu ý rằng vị trí mặc định cho các thư viện là C:\Boost\lib
nhưng bạn sẽ muốn đặt chúng trong một x64
thư mục nếu bạn dự định xây dựng cho nhiều kiến trúc.
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)
đường dẫn bao gồm của bạn.C:\Boost\lib\x64
đường dẫn libs của bạn.Bạn cũng có thể thử -j% NUMBER_OF_PROCESSORS% làm đối số, nó sẽ sử dụng tất cả các lõi của bạn. Làm cho mọi thứ siêu nhanh trên lõi tứ của tôi.
Tôi có thể đề xuất mẹo sau: Tạo một boost.props
tệp đặc biệt
Quy trình này có giá trị tăng chỉ được bao gồm trong các dự án mà bạn muốn bao gồm nó một cách rõ ràng. Khi bạn có một dự án mới sử dụng boost, hãy làm:
EDIT (chỉnh sửa sau đây từ @ jim-fred):
Các boost.props
tập tin kết quả trông giống như thế này ...
<?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>
Nó chứa một macro người dùng cho vị trí của thư mục boost (trong trường hợp này là D: \ boost_1_53_0) và hai tham số khác: Bao gồmPath và LibraryPath. Một câu lệnh #include <boost/thread.hpp>
sẽ tìm thấy thread.hpp trong thư mục thích hợp (trong trường hợp này là D: \ boost_1_53_0 \ boost \ thread.hpp). Thư mục 'giai đoạn \ lib \' có thể thay đổi tùy thuộc vào thư mục được cài đặt.
Tập tin boost.props này có thể nằm trong D:\boost_1_53_0\
thư mục.
Bạn cần những phần nào của Boost? Rất nhiều thứ là một phần của TR1 được phân phối với Visual Studio, vì vậy bạn có thể nói một cách đơn giản, ví dụ:
#include <tr1/memory>
using std::tr1::shared_ptr;
Theo James, điều này cũng sẽ hoạt động (trong C ++ 0x):
#include <memory>
using std::shared_ptr;
std
không gian tên, vì chúng nằm trong tiêu chuẩn C ++ 0x. (Tôi nghĩ rằng chúng có lẽ cũng nằm trong std::tr1
không gian tên, để tương thích ngược).
Chủ đề này đã xuất hiện được một thời gian và tôi nghĩ rằng tôi đã thêm một vài điều về CÁCH để xây dựng Boost nhanh nhất có thể trên phần cứng cụ thể của bạn.
Nếu bạn có 4 hoặc 6 lõi, hãy sử dụng -j5 hoặc -j7 tương ứng. Chắc chắn không phải là bản dựng tiêu chuẩn cũng như -j2 trừ khi bạn thực sự có lõi kép.
Tôi đang chạy Sandy Bridge Extreme với kho có xung nhịp 3930K (6 lõi) trên trạm chính của mình, nhưng có 2600k (4 lõi) trên hộp sao lưu cũ hơn và xu hướng là tôi có được thời gian biên dịch Boost tốt nhất với N + 1 quá trình xây dựng trong đó N là số lõi vật lý. N + 2 đạt đến điểm giảm lợi nhuận và thời gian tăng lên.
Ghi chú: Siêu phân luồng được bật, RAM DDR3 32 GB, SSD Samsung 840 EVO.
-j7 trên 6 lõi (2 phút và 51 giây) (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
-j6 trên 6 lõi (3 phút và 2 giây) (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
-j8 trên 6 lõi (3 phút và 17 giây) (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
Cấu hình
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)
Tôi lưu ý việc xây dựng 64 bit mất nhiều thời gian hơn một chút, tôi cần thực hiện so sánh tương tự cho các bản đó và cập nhật.
Tải xuống boost từ: http://www.boost.org/users/doad/ vd bởi svn
Sau đó: cmd -> chuyển đến thư mục boost ("D: \ boostTrunk" - nơi Bạn thanh toán hoặc tải xuống và giải nén gói): lệnh: bootstrap
chúng tôi đã tạo bjam.exe trong ("D: \ boostTrunk") Sau đó: lệnh: bjam toolset = msvc-10.0 biến = gỡ lỗi, phát hành luồng = multi link = static (Sẽ mất một thời gian ~ 20 phút.)
Sau đó: Mở Visual studio 2010 -> tạo dự án trống -> đi đến thuộc tính dự án -> set:
Dán mã này và kiểm tra nếu nó đang làm việc?
#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;
}
Tài nguyên: https://www.youtube.com/watch?v=5AmwIwedTCM
Đây là cách tôi có thể sử dụng Boost:
Bạn sẽ có thể xây dựng dự án của bạn mà không có bất kỳ lỗi nào!
Các trình cài đặt Windows nằm ở đây làm việc hoàn hảo cho tôi. Tôi đã thực hiện các bước sau:
Chúc may mắn!
Một bổ sung nhỏ cho câu trả lời chính rất nhiều thông tin của KTC:
Nếu bạn đang sử dụng Visual Studio c ++ 2010 Express miễn phí và quản lý để có được cái đó để biên dịch các nhị phân 64 bit, và bây giờ muốn sử dụng nó để sử dụng phiên bản 64 bit của các libaries Boost, bạn có thể kết thúc với 32- Tất nhiên là các thư viện bit (số dặm của bạn có thể khác nhau, nhưng trên máy của tôi thì đây là trường hợp đáng buồn).
Tôi có thể khắc phục điều này bằng cách sử dụng như sau: giữa các bước được mô tả ở trên như
Tôi đã chèn một cuộc gọi đến 'setenv' để đặt môi trường. Đối với bản dựng phát hành, các bước trên trở thành:
Tôi tìm thấy thông tin này ở đây: http://boost.2283326.n4.nabble.com/64-bit-with-VS-Express-again-td3044258.html
Một ví dụ tối giản để giúp bạn bắt đầu trong Visual Studio:
1. Tải xuống và giải nén Boost từ đây.
2. Tạo một dự án trống Visual Studio, sử dụng thư viện boost ví dụ không yêu cầu biên dịch riêng:
#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.Trong các thuộc tính dự án Visual Studio của bạn, thiết lập các Thư mục bao gồm bổ sung:
Cho một ví dụ rất đơn giản:
Cách cài đặt thư viện Boost trong Visual Studio
Nếu bạn không muốn sử dụng toàn bộ thư viện boost, chỉ cần một tập hợp con:
Sử dụng tập hợp con của các thư viện boost trong Windows
Nếu bây giờ bạn đặc biệt muốn về các thư viện yêu cầu biên dịch:
Cách sử dụng các thư viện được biên dịch Boost trong Windows
Ngoài ra, có một cái gì đó tôi thấy rất hữu ích. Sử dụng các biến môi trường cho các đường dẫn tăng của bạn. (Cách đặt biến môi trường trong cửa sổ, liên kết ở dưới cùng cho 7,8,10) Biến BOOST_ROOT dường như là vị trí phổ biến nữa và được đặt thành đường dẫn gốc nơi bạn giải nén boost.
Sau đó, trong Thuộc tính, c ++, chung, Bổ sung Bao gồm các Thư mục $(BOOST_ROOT)
. Sau đó, nếu / khi bạn chuyển sang phiên bản mới hơn của thư viện boost, bạn có thể cập nhật biến môi trường của mình để trỏ đến phiên bản mới hơn này. Càng nhiều dự án của bạn, hãy sử dụng boost, bạn sẽ không phải cập nhật 'Thư mục bao gồm bổ sung' cho tất cả các dự án.
Bạn cũng có thể tạo một biến BOOST_LIB và chỉ ra nơi các lib được tổ chức. Tương tự như vậy đối với Trình liên kết-> Thư mục thư viện bổ sung, bạn sẽ không phải cập nhật dự án. Tôi có một số công cụ cũ được xây dựng với vs10 và công cụ mới với vs14 vì vậy đã xây dựng cả hai hương vị của lib lib cho cùng một thư mục. Vì vậy, nếu tôi chuyển một dự án từ vs10 sang vs14, tôi không phải thay đổi đường dẫn tăng.
LƯU Ý: Nếu bạn thay đổi một biến môi trường, nó sẽ không đột nhiên hoạt động trong dự án VS mở. VS tải các biến khi khởi động. Vì vậy, bạn sẽ phải đóng VS và mở lại nó.