关于如何在Visual Studio的空项目中使用Boost库的一步一步的解释是什么?
当前回答
我可以推荐以下技巧:创造一种特殊的刺激。道具文件
打开物业管理 右键单击项目节点,选择“添加新项目属性表”。 选择一个位置并命名您的属性表(例如:c:\mystuff\boost.props) 将附加的Include和Lib文件夹修改为搜索路径。
此过程的价值是仅在希望显式包含boost的项目中包含它。当你有一个使用boost的新项目时,请:
打开物业管理器。 右键单击项目节点,并选择“添加现有属性表”。 选择boost属性表。
编辑(以下编辑来自@jim-fred):
由此产生的推动力。道具文件看起来像这样…
<?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目录位置的用户宏(在本例中为D:\boost_1_53_0)和另外两个参数:IncludePath和LibraryPath。语句#include <boost/thread.hpp>将在适当的目录中找到thread.hpp(在本例中为D:\boost_1_53_0\boost\thread.hpp)。'stage\lib\'目录可能会根据安装到的目录而改变。
这提振。props文件可以位于D:\boost_1_53_0\目录中。
其他回答
虽然Boost网站上的说明很有帮助,但这里有一个简化版本,也可以构建x64库。
只有在使用说明页第3节中提到的其中一个库时才需要这样做。(例如,使用Boost。文件系统需要编译。)如果您不使用其中任何一个,只需解压缩并运行。
构建32位库
这将安装C:\Boost\include\ Boost -(version)下的Boost头文件,以及C:\Boost\lib\i386下的32位库。请注意,库的默认位置是C:\Boost\lib,但如果您计划为多个体系结构构建,则需要将它们放在i386目录下。
解压缩Boost到一个新目录。 启动32位MSVC命令提示符,并切换到解压缩Boost的目录。 运行:引导 运行命令: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 对于Visual Studio 2017,使用toolset=msvc-14.1 将C:\Boost\include\ Boost -(version)添加到include路径中。 将C:\Boost\lib\i386添加到libs路径。
构建64位库
这将安装C:\Boost\include\ Boost -(version)下的Boost头文件,以及C:\Boost\lib\x64下的64位库。请注意,库的默认位置是C:\Boost\lib,但如果您计划为多个体系结构构建,则需要将它们放在x64目录下。
解压缩Boost到一个新目录。 启动64位MSVC命令提示符,并切换到解压缩Boost的目录。 运行:引导 运行命令: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 将C:\Boost\include\ Boost -(version)添加到include路径中。 将C:\Boost\lib\x64添加到libs路径中。
下面是我使用Boost的方法:
下载并解压zip版本的Boost库。 运行bootstrap.bat文件,然后运行bjam.exe。 等待大约30分钟左右。 在Visual Studio中创建一个新项目。 转到项目——>属性——>连接器——>通用——>附加库目录,并将boost/stage/lib目录添加到其中。 转到项目——>属性——>C/ c++——>通用——>附加包括目录并添加boost目录。
您将能够毫无错误地构建您的项目!
我可以推荐以下技巧:创造一种特殊的刺激。道具文件
打开物业管理 右键单击项目节点,选择“添加新项目属性表”。 选择一个位置并命名您的属性表(例如:c:\mystuff\boost.props) 将附加的Include和Lib文件夹修改为搜索路径。
此过程的价值是仅在希望显式包含boost的项目中包含它。当你有一个使用boost的新项目时,请:
打开物业管理器。 右键单击项目节点,并选择“添加现有属性表”。 选择boost属性表。
编辑(以下编辑来自@jim-fred):
由此产生的推动力。道具文件看起来像这样…
<?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目录位置的用户宏(在本例中为D:\boost_1_53_0)和另外两个参数:IncludePath和LibraryPath。语句#include <boost/thread.hpp>将在适当的目录中找到thread.hpp(在本例中为D:\boost_1_53_0\boost\thread.hpp)。'stage\lib\'目录可能会根据安装到的目录而改变。
这提振。props文件可以位于D:\boost_1_53_0\目录中。
这篇文章已经有一段时间了,我想我应该添加一些关于如何在特定的硬件上尽可能快地构建Boost的内容。
如果你有4核或6核,分别使用-j5或-j7。当然不是标准版本,也不是-j2,除非你确实有双核。
我在我的主站上运行了一个3930K(6核)库存的Sandy Bridge Extreme,但在旧的备份盒上有一个2600k(4核),趋势是我用N + 1构建进程获得了最佳的Boost编译时间,其中N是物理内核的数量。N+2达到收益递减点,时间增加。
注:超线程启用,32GB内存DDR3,三星840 EVO SSD。
-j7在6核(2分51秒)(Win7终极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终极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终极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位构建需要更长的时间,我需要对这些进行相同的比较和更新。
你需要Boost的哪些部分?很多东西都是TR1的一部分,它是随Visual Studio一起发布的,所以你可以简单地说,例如:
#include <tr1/memory>
using std::tr1::shared_ptr;
根据James的说法,这也应该工作(在c++ 0x中):
#include <memory>
using std::shared_ptr;
推荐文章
- 面试问题:检查一个字符串是否是另一个字符串的旋转
- 如何使用枚举作为标志在c++ ?
- 在c++程序中以编程方式检测字节序
- 为什么我的程序不能在Windows 7下用法语编译?
- 如何获取变量的类型?
- 查看Visual Studio 2010+中的所有断点
- 什么是奇怪的重复模板模式(CRTP)?
- 连接两个向量的最佳方法是什么?
- 在c++中,是通过值传递更好,还是通过引用到const传递更好?
- Visual Studio禁用缺少XML注释警告
- 在STL中deque到底是什么?
- Windows上最好的免费c++分析器是什么?
- 如何自动转换强类型枚举为int?
- 在一个类中使用具有成员函数的泛型std::function对象
- 'for'循环中的后增量和前增量产生相同的输出