如何在Visual Studio 2010中使用Boost

关于如何在Visual Studio 2010中的空项目中使用Boost库,一步一步的解释是什么?

虽然Nate的答案已经相当不错了,但是我会根据要求更加专门针对Visual Studio 2010进行扩展,并在各种可选组件中包含需要外部库的信息。

如果您只使用头文件库,那么您只需要解压缩下载并设置环境variables即可。 下面的指令只为Visual Studio设置环境variables,而不是整个系统。 注意你只需要做一次。

  1. 将最新版本的boost(1.47.0)写入您select的目录(例如C:\boost_1_47_0 )。
  2. 在Visual Studio中创build一个新的空项目。
  3. 打开Property Manager并展开您select的平台的configuration之一。
  4. select并右键单击Microsoft.Cpp.<Platform>.user ,然后select“ Properties以打开属性页进行编辑。
  5. select左侧的VC++ Directories
  6. 编辑“ Include Directories部分以包含升压源文件的path。
  7. 重复步骤3 – 6,根据需要select不同的平台。

如果你想使用boost需要构build的部分,但是没有一个需要外部依赖的特性,那么构build它就相当简单。

  1. 将最新版本的boost(1.47.0)写入您select的目录(例如C:\boost_1_47_0 )。
  2. 启动您select的平台的Visual Studio命令提示符并导航到提升的位置。
  3. 运行: bootstrap.bat生成b2.exe(以前称为bjam)。
  4. 运行b2:

    • Win32: b2 --toolset=msvc-10.0 --build-type=complete stage ;
    • x64: b2 --toolset=msvc-10.0 --build-type=complete architecture=x86 address-model=64 stage

去散步/看电影或2 / ….

  1. 通过上述指令集中的步骤2 – 6来设置环境variables。
  2. 编辑Library Directories部分以包含boost库输出的path。 (上述示例和说明的默认设置是C:\boost_1_47_0\stage\lib 。如果您希望并行安装x86和x64(例如<BOOST_PATH>\lib\x86<BOOST_PATH>\lib\x64 )。
  3. 重复步骤2 – 6,根据需要select不同的平台。

如果你想要可选的组件,那么你有更多的工作要做。 这些是:

  • Boost.IOStreams Bzip2filter
  • Boost.IOStreams Zlibfilter
  • Boost.MPI
  • Boost.Python的
  • Boost.Regex ICU支持

Boost.Iostreams Bzip2filter:

  1. 将最新版本的bzip2库(编写时为1.0.6)源文件解压缩到您select的目录(例如C:\bzip2-1.0.6 )。
  2. 按照上面的第二组指令来构buildboost,但在步骤5中运行b2时添加选项-sBZIP2_SOURCE="C:\bzip2-1.0.6"

Boost.IOStreams Zlibfilter

  1. 将最新版本的zlib库(1.2.5编写)源文件解压到您select的目录(例如C:\zlib-1.2.5 )。
  2. 按照上面的第二组指令来构buildboost,但在步骤5中运行b2时添加选项-sZLIB_SOURCE="C:\zlib-1.2.5"

Boost.MPI

  1. 安装一个MPI发行版,例如Microsoft Compute Cluster Pack。
  2. 按照上面第二组指令中的步骤1 – 3build立提升。
  3. 编辑运行引导程序导致的<BOOST_PATH>目录中的文件project-config.jam 。 添加一行, using mpi ;读取using mpi ; (注意';'之前的空格)。
  4. 按照上面第二组指令的其余步骤构build提升。 如果MPI安装的自动检测失败,则需要查找并修改相应的构build文件以在正确的位置查找MPI。

Boost.Python的

  1. 安装一个Python发行版,比如ActiveState的ActivePython。 确保Python安装位于PATH中。
  2. 要完全构build库的32位版本,需要32位Python,对于64位版本也是如此。 如果因为这个原因安装了多个版本,则需要告诉b2在哪里可以find特定的版本以及何时使用哪个版本。 一种方法是编辑运行引导程序导致的<BOOST_PATH>目录中的文件project-config.jam 。 添加以下两行,根据您的Python安装path和版本进行调整(注意“;”之前的空格)。

    using python : 2.6 : C:\\Python\\Python26\\python ;

    using python : 2.6 : C:\\Python\\Python26-x64\\python : : : <address-model>64 ;

    请注意,这样的显式Python规范目前会导致MPI构build失败。 所以如果你正在构buildMPI,那么你需要做一些独立的构build,不pipe规范如何构build。

  3. 按照上面的第二组指令来build立提升。

Boost.Regex ICU支持

  1. 将最新版本的ICU4C库(写入时为4.8)源文件解压到您select的目录(例如C:\icu4c-4_8 )。
  2. <ICU_PATH>\source\allinone打开Visual Studio解决scheme。
  3. 为您所select的平台进行debugging和发布configuration。 当debug&release版本的输出位于同一目录(这是默认行为)时,用Visual Studio 2010构buildICU4C的最新版本可能会出现问题 。 一个可能的解决方法是做一个全部构build(debugging构build说),然后在第二个configuration(如发布版本)中重build所有。
  4. 如果要构buildx64,则需要运行x64操作系统,因为后期构build步骤涉及运行正在构build的64位应用程序。
  5. 完成后,可以select删除源目录。
  6. 按照上面的第二组指令来构buildboost,但是在步骤5中运行b2时添加选项-sICU_PATH="C:\icu4c-4_8"

虽然Boost网站上的说明很有帮助,但下面是一个精简版本,它也构build了x64库。

  • 如果您使用说明页面第3节中提到的库之一,则只需执行此操作。 (例如,要使用Boost.Filesystem需要编译。)如果您没有使用这些,只需解压缩即可。

构build32位库

这将在C:\Boost\include\boost-(version)下安装Boost头文件,并在C:\Boost\lib\i386下安装32位库。 请注意,库的默认位置是C:\Boost\lib但如果您计划为多个体系结构构build,则需要将它们放在i386目录下。

  1. 将Boost解压缩到一个新的目录中。
  2. 启动一个32位MSVC命令提示符并切换到Boost解压缩的目录。
  3. 运行: bootstrap
  4. 运行: b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\i386 install
    • 对于Visual Studio 2012,请使用toolset=msvc-11.0
    • 对于Visual Studio 2010,请使用toolset=msvc-10.0
  5. C:\Boost\include\boost-(version)到包含path中。
  6. C:\Boost\lib\i386到您的libspath。

构build64位库

这将在C:\Boost\include\boost-(version)下安装Boost头文件,并在C:\Boost\lib\x64下安装64位库。 请注意,库的默认位置是C:\Boost\lib但如果您计划为多个体系结构构build,则需要将它们放在x64目录下。

  1. 将Boost解压缩到一个新的目录中。
  2. 启动一个64位MSVC命令提示符并切换到解压缩Boost的目录。
  3. 运行: bootstrap
  4. 运行: b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\x64 architecture=x86 address-model=64 install
    • 对于Visual Studio 2012,请使用toolset=msvc-11.0
    • 对于Visual Studio 2010,请使用toolset=msvc-10.0
  5. C:\Boost\include\boost-(version)到包含path中。
  6. C:\Boost\lib\x64到您的libspath中。

您也可以尝试使用-j%NUMBER_OF_PROCESSORS%作为它将使用所有内核的参数。 使我的四核心超快速。

我可以推荐以下技巧:创build一个特殊的boost.props文件

  1. 打开物业经理
  2. 右键单击您的项目节点,然后select“添加新的项目属性表”。
  3. select一个位置并命名你的属性表(例如c:\ mystuff \ boost.props)
  4. 将其他Include和Lib文件夹修改为searchpath。

这个过程的价值在于,只有在你想明确包含它的项目中才会包含boost。 当你有一个新的项目使用提升,做:

  1. 打开物业经理。
  2. 右键单击项目节点,然后select“添加现有属性表”。
  3. select提升属性表。

编辑(从@ 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> 

它包含用于boost目录位置的用户macros(在本例中为D:\ boost_1_53_0)和另外两个参数:IncludePath和LibraryPath。 语句#include <boost/thread.hpp>会在相应的目录(在这种情况下,D:\ boost_1_53_0 \ boost \ thread.hpp)中findthread.hpp。 “stage \ lib \”目录可能会根据安装的目录而改变。

boost.props文件可以位于D:\boost_1_53_0\目录下。

你需要什么Boost的部分? 很多东西都是Visual Studio附带的TR1的一部分,所以你可以简单地说,例如:

 #include <tr1/memory> using std::tr1::shared_ptr; 

根据詹姆斯,这也应该工作(在C + + 0x):

 #include <memory> using std::shared_ptr; 

还有一点点:如果你想减less编译时间,你可以添加标志

-j2

同时运行两个并行版本。 这可能会减less它观看一部电影;)

这个线程已经有一段时间了,我想我会添加一些关于如何在您的特定硬件上尽快构buildBoost。

如果您有4或6核心分别使用-j5或-j7。 当然不是标准的构build,也不是-j2,除非你确实有双核。

我正在运行Sandy Bridge Extreme,在我的主站上有3​​930K(6核)的主频,但在老的备份盒上有2600K(4核),而且我用N + 1构build进程,其中N是物理内核的数量。 N + 2达到收益递减点,时间上升。

备注:启用超线程,32GB内存DDR3,三星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 

6核心(3分钟和2秒)(Win7旗舰版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 

-j7建立在6核上

configuration

 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位版本需要更长的时间,我需要做相同的比较和更新。

以下是我如何使用Boost:

  1. 下载并提取Boost库的zip版本。
  2. 运行bootstrap.bat文件,然后运行bjam.exe。
  3. 等待大约30分钟左右。
  4. 在Visual Studio中创build一个新项目。
  5. 转到项目 – >属性 – >链接器 – >常规 – >其他库目录,并添加boost / stage / lib目录。
  6. 转到项目 – >属性 – > C / C ++ – >常规 – >其他包含目录,并添加boost目录。

你将能够build立你的项目没有任何错误!

http://www.boost.org/users/download/下载,例如通过svn

  • Windows – >乌龟(最简单的方法)

之后:cmd – >进入boost目录(“D:\ boostTrunk” – 在这里你签出或下载并解压包):command: bootstrap

我们在(“D:\ boostTrunk”)中创build了bjam.exe。之后:命令: bjam toolset = msvc-10.0 variant = debug,释放线程=多链接= static (需要一些时间~20分钟)

之后:打开Visual Studio 2010 – >创build空项目 – >去项目属性 – >设置:

项目属性VS 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; } 

资源: https : //www.youtube.com/watch?v = 5AmwIwedTCM

位于这里的Windows安装程序对我来说是完美的。 我采取了以下步骤:

  1. 按照安装向导完成。
  2. 运行视觉工作室。
  3. 创build一个新的C ++项目
  4. 打开项目属性(可以通过在解决scheme资源pipe理器中右键单击项目名称来find)
  5. 在“C / C ++> General> Additional Include Directories”下添加boost根目录的path。 我的版本的默认值是C:\ local \ boost_1_63_0。 “提升”之后的数字是提升的版本。
  6. 在项目属性中的“链接器>其他库目录”下添加库文件的目录。 我的版本的默认值是C:\ local \ boost_1_63_0 \ lib64-msvc-14.0。 “lib”之后的数字与构build目标(Visual Studio中的32位或64位)相关,“msvc”之后的数字与Visual Studio的版本相关(14.0与Visual Studio 2015相关,但是我使用它与2017年的Visual Studio)。

祝你好运!

KTC非常丰富的主要答案的一小部分:

如果您正在使用免费的Visual Studio c ++ 2010 Express,并设法让它编译64位二进制文​​件,并且现在想使用它来使用64位版本的Boost库文件,位库(你的里程可能会有所不同,但在我的机器上这是悲伤的情况)。

我可以解决这个问题,使用以下内容:介于上述步骤之间

  1. 启动一个32位MSVC命令提示符并切换到Boost解压缩的目录。
  2. 运行:bootstrap

我插入了一个调用'setenv'来设置环境。 对于发布版本,上面的步骤变成:

  1. 启动一个32位MSVC命令提示符并切换到Boost解压缩的目录。
  2. 运行:“C:\ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Bin \ setenv.cmd”/ Release / x64
  3. 运行:bootstrap

我在这里find了这个信息: http : //boost.2283326.n4.nabble.com/64-bit-with-VS-Express-again-td3044258.html

一个简单的例子,让你在Visual Studio中开始:

1.从这里下载并解压缩Boost。

创build一个Visual Studio空项目,使用一个不需要单独编译的示例boost库:

 #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项目属性中设置其他包含目录:

项目属性

举一个非常简单的例子:

如何在Visual Studio中安装Boost库

如果你不想使用整个boost库,只是一个子集:

在Windows中使用boost库的一个子集

如果您现在特别想要了解需要编译的库:

如何在Windows中使用Boost编译的库

另外,还有一些我觉得非常有用的东西。 为升压path使用环境variables。 (如何在Windows中设置环境variables,底部为7,8,10链接) BOOST_ROOTvariables似乎已经是常见的地方,并设置为解压缩的根path。

然后在Properties中,c ++,general,Additional Include Directories使用$(BOOST_ROOT) 。 然后,如果/当您移动到更新版本的boost库时,您可以更新您的环境variables以指向这个更新的版本。 随着更多的项目,使用boost,你将不必更新所有的“其他包含目录”。

您也可以创build一个BOOST_LIBvariables并将其指向该库的位置。 因此,对于链接器 – >其他库目录,您不必更新项目。 我用vs10构build了一些旧东西,用vs14构build了新东西,这样就可以将boost lib的两个版本都构build到同一个文件夹中。 所以如果我把一个项目从vs10移到vs14,我不需要改变boostpath。

注意:如果你改变一个环境variables,它不会突然在一个打开的VS项目中工作。 VS在启动时加载variables。 所以你将不得不closuresVS并重新打开它。