Answers:
尽管Nate的答案已经很不错了,但我将根据要求针对Visual Studio 2010对其进行更具体的扩展,并在需要外部库的各种可选组件中包括有关编译的信息。
如果您仅使用标头库,那么您要做的就是取消存档boost下载并设置环境变量。下面的说明仅为Visual Studio设置环境变量,而不是整个系统。请注意,您只需要做一次。
C:\boost_1_47_0
)。Microsoft.Cpp.<Platform>.user
,然后选择Properties
以打开“属性页面”进行编辑。VC++ Directories
左侧。Include Directories
部分,以包含增强源文件的路径。如果要使用boost需要构建的部分,而又不使用需要外部依赖的功能,则构建起来非常简单。
C:\boost_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时添加该选项。增强MPI
project-config.jam
在<BOOST_PATH>
运行引导程序后的目录中编辑文件。在读取的行中添加using mpi ;
(注意“;”之前的空格)。Boost.Python
要完全构建该库的32位版本,需要32位Python,对于64位版本也是如此。如果出于这种原因安装了多个版本,则需要告诉b2在哪里可以找到特定版本以及何时使用哪个版本。一种方法是project-config.jam
在<BOOST_PATH>
运行引导程序后编辑目录中的文件。添加以下两行,以根据您的Python安装路径和版本进行适当调整(注意';'之前的空格)。
using python : 2.6 : C:\\Python\\Python26\\python ;
using python : 2.6 : C:\\Python\\Python26-x64\\python : : : <address-model>64 ;
请注意,此类明确的Python规范当前导致MPI构建失败。因此,如果您还要构建MPI,则需要在有无规范的情况下进行一些单独的构建,以构建所有内容。
按照上面的第二组说明进行构建。
Boost.Regex ICU支持
C:\icu4c-4_8
)。<ICU_PATH>\source\allinone
。-sICU_PATH="C:\icu4c-4_8"
在步骤5中运行b2时添加该选项。虽然说明书上的升压网站是有帮助的,这里是一个浓缩版,也是建立64个库。
这将在下安装Boost头文件,在下安装C:\Boost\include\boost-(version)
32位库C:\Boost\lib\i386
。请注意,这些库的默认位置是,C:\Boost\lib
但是i386
如果您打算为多种体系结构构建,则需要将它们放在目录下。
bootstrap
跑: 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
到您的库路径。这将在下安装Boost头文件,在下安装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
文件
此过程的价值在于,boost仅包含在您要明确包含它的项目中。当您有一个使用boost的新项目时,请执行以下操作:
编辑(来自@ 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)以及其他两个参数:IncludePath和LibraryPath。一条语句#include <boost/thread.hpp>
将在适当的目录(本例中为D:\ boost_1_53_0 \ boost \ thread.hpp)中找到thread.hpp。“ stage \ lib \”目录可能会更改,具体取决于安装到的目录。
该boost.props文件可以位于D:\boost_1_53_0\
目录中。
您需要Boost的哪些部分?Visual Studio随附的TR1包含很多内容,因此您可以简单地说,例如:
#include <tr1/memory>
using std::tr1::shared_ptr;
根据James的说法,这也应该可以工作(在C ++ 0x中):
#include <memory>
using std::shared_ptr;
std
命名空间,就像它们在C ++ 0x标准中一样。(我认为它们也可能在std::tr1
名称空间中,以实现向后兼容)。
这个线程已经存在了一段时间,我想我应该添加一些有关如何在特定硬件上尽快构建Boost的方法。
如果您有4核或6核,请分别使用-j5或-j7。除非您确实具有双核,否则肯定不是标准版本或-j2。
我在主站上运行的Sandy Bridge Extreme的主时钟频率为3930K(6核),但在较旧的备份盒上的时钟为2600k(4核),趋势是我使用N +获得最佳的Boost编译时间1个构建过程,其中N是物理核心数。N + 2到达收益递减点,时间增加。
注意:已启用超线程,32GB RAM DDR3,Samsung 840 EVO SSD。
-j7于6核(2分51秒)(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于6核(3分2秒)(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 6核(3分17秒)(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
设定档
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->转到boost目录(“ D:\ boostTrunk”-您在其中签出或下载并解压缩包):command: bootstrap
我们在(“ D:\ boostTrunk”)中创建了bjam.exe,之后:命令: bjam toolset = msvc-10.0 variant = debug,释放线程= multi link = static (这需要一些时间〜20min。)
之后:打开Visual Studio 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;
}
此处的Windows安装程序非常适合我。我采取了以下步骤:
祝好运!
KTC非常有用的主要答案的一小部分内容:
如果您使用的是免费的Visual Studio c ++ 2010 Express,并且设法使该编译器编译64位二进制文件,而现在又想使用它来使用Boost库的64位版本,则最终可能会得到32位位库(当然,您的里程可能会有所不同,但是在我的机器上,这是可悲的情况)。
我可以使用以下方法解决此问题:在上述步骤之间
我插入了对“ setenv”的调用以设置环境。对于发布版本,上述步骤变为:
我在这里找到此信息:http : //boost.2283326.n4.nabble.com/64-bit-with-VS-Express-again-td3044258.html
一个使您开始使用Visual Studio的极简示例:
1. 从此处下载并解压Boost。
2.使用示例boost库创建一个Visual Studio空项目,该示例不需要单独编译:
#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.在Visual Studio项目属性中,设置“附加包含目录”:
举一个非常简单的例子:
如果您不想使用整个Boost库,请使用以下子集:
如果您现在特别想了解需要编译的库:
另外,我发现有些东西非常有用。使用环境变量作为提升路径。(如何在Windows中设置环境变量,底部链接为7,8,10) BOOST_ROOT变量似乎已经很常见了,并设置为您解压boost的根路径。
然后在“属性”,“ c ++”,“常规”中,使用“其他包含目录” $(BOOST_ROOT)
。然后,如果/当您移至boost库的较新版本时,可以更新环境变量以指向该较新版本。随着您的项目越来越多,使用boost,您将不必为所有项目都更新“其他包含目录”。
您还可以创建BOOST_LIB变量并将其指向暂存库的位置。因此,对于链接程序->其他库目录,您也不必更新项目。我有一些用vs10构建的旧内容,以及用vs14构建的新内容,因此将boost lib的两种风格都构建到了同一文件夹中。因此,如果我将项目从vs10移至vs14,则无需更改提升路径。
注意:如果更改环境变量,则它在打开的VS项目中不会突然起作用。VS在启动时加载变量。因此,您将不得不关闭VS并重新打开它。