当前位置:  开发笔记 > 编程语言 > 正文

如何在Visual Studio 2010中使用Boost

如何解决《如何在VisualStudio2010中使用Boost》经验,为你挑选了8个好方法。

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



1> KTC..:

虽然Nate的答案已经非常好了,但我将根据要求更具体地针对Visual Studio 2010进行扩展,并包含有关在需要外部库的各种可选组件中进行编译的信息.

如果您只使用标头库,那么您需要做的就是取消归档boost下载并设置环境变量.下面的说明仅为Visual Studio设置环境变量,而不是整个系统的环境变量.请注意,您只需要执行一次.

    将最新版本的boost(写入时为1.47.0)解压缩到您选择的目录中(例如C:\boost_1_47_0).

    在Visual Studio中创建一个新的空项目.

    打开Property Manager并展开您选择的平台的其中一个配置.

    选择并右键单击Microsoft.Cpp..user,然后选择Properties打开属性页面进行编辑.

    选择VC++ Directories左侧.

    编辑该Include Directories部分以包含boost源文件的路径.

    如果需要,对您选择的不同平台重复步骤3 - 6.

如果你想使用需要构建的boost部分,但没有需要外部依赖的功能,那么构建它非常简单.

    将最新版本的boost(写入时为1.47.0)解压缩到您选择的目录中(例如C:\boost_1_47_0).

    启动您选择的平台的Visual Studio命令提示符并导航到boost所在的位置.

    运行:bootstrap.bat构建b2.exe(以前命名为bjam).

    运行b2:

    Win32 : b2 --toolset=msvc-10.0 --build-type=complete stage ;

    64位: b2 --toolset=msvc-10.0 --build-type=complete architecture=x86 address-model=64 stage

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

    从上面的指令集中执行步骤2 - 6以设置环境变量.

    编辑该Library Directories部分以包含boost库输出的路径.(上面的例子和说明的默认值是C:\boost_1_47_0\stage\lib.如果你想并排x86和x64(比如\lib\x86&\lib\x64),首先重命名并移动目录.

    如果需要,请根据您选择的不同平台重复步骤2 - 6.

如果您需要可选组件,那么您还有更多工作要做.这些是:

Boost.IOStreams Bzip2过滤器

Boost.IOStreams Zlib过滤器

Boost.MPI

Boost.Python的

Boost.Regex ICU支持

Boost.IOStreams Bzip2过滤器:

    将最新版本的bzip2库(编写时为1.0.6)源文件解压缩到您选择的目录中(例如C:\bzip2-1.0.6).

    按照上面的第二组说明构建boost,但-sBZIP2_SOURCE="C:\bzip2-1.0.6"在步骤5中运行b2时添加选项.

Boost.IOStreams Zlib过滤器

    将最新版本的zlib库(编写时为1.2.5)源文件解压缩到您选择的目录中(例如C:\zlib-1.2.5).

    按照上面的第二组说明构建boost,但-sZLIB_SOURCE="C:\zlib-1.2.5"在步骤5中运行b2时添加选项.

Boost.MPI

    安装MPI分发版,例如Microsoft Compute Cluster Pack.

    按照上面第二组说明中的步骤1 - 3进行构建增强.

    编辑运行bootstrap导致project-config.jam的目录中的文件.添加一行读取using mpi ;(注意';'之前的空格).

    按照上面第二组说明中的其余步骤构建boost.如果MPI安装的自动检测失败,那么您需要查找并修改相应的构建文件以在正确的位置查找MPI.

Boost.Python的

    安装Python发行版,例如ActiveState的ActivePython.确保Python安装在PATH中.

    要完全构建32位版本的库,需要32位Python,类似于64位版本.如果由于这个原因安装了多个版本,则需要告诉b2在哪里可以找到特定版本以及何时使用哪个版本.一种方法是编辑运行bootstrap导致project-config.jam的目录中的文件.添加以下两行,根据Python安装路径和版本进行调整(注意';'之前的空格).

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

    using python : 2.6 : C:\\Python\\Python26-x64\\python : : : 64 ;

    请注意,此类显式Python规范当前会导致MPI构建失败.因此,如果您正在构建MPI,那么您需要使用带有和不带规范的单独构建来构建所有内容.

    按照上面的第二组说明构建boost.

Boost.Regex ICU支持

    将最新版本的ICU4C库(写入时为4.8)源文件解压缩到您选择的目录中(例如C:\icu4c-4_8).

    在中打开Visual Studio解决方案\source\allinone.

    Build All用于您选择的平台的调试和发布配置.当调试和发布版本的输出位于同一目录(这是默认行为)时,使用Visual Studio 2010构建最新版本的ICU4C 可能会出现问题.一个可能的解决方法是执行Build All(调试构建说),然后在第二个配置中执行Rebuild all(例如发布版本).

    如果为x64构建,则需要运行x64 OS,因为后期构建步骤涉及运行它正在构建的一些64位应用程序.

    完成后,可以选择删除源目录.

    按照上面的第二组说明构建boost,但-sICU_PATH="C:\icu4c-4_8"在步骤5中运行b2时添加选项.


如果您同时需要x64和win32,请将"--stagedir = lib/win32"和"--stagedir = lib/x64"添加到相应的版本中.
应该注意的是,您必须选择工具>设置>专家模式才能看到属性表.给我一些谷歌搜索终于找到了...
有关如何为Visual Studio 2010构建和配置提升的视频教程,这可能有所帮助:http://www.youtube.com/watch?v = 5AmwIwedTCM

2> Nate..:

虽然说明书上的升压网站是有帮助的,这里是一个浓缩版,也是建立64库.

如果您使用说明页面第3部分中提到的库之一,则只需执行此操作.(例如,使用Boost.Filesystem需要编译.)如果你没有使用任何这些,只需解压缩然后去.

构建32位库

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

    将Boost解压缩到一个新目录.

    启动32位MSVC命令提示符并切换到解压缩Boost的目录.

    跑: bootstrap

    跑: 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)到您的包含路径.

    添加C:\Boost\lib\i386到libs路径.

构建64位库

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

    将Boost解压缩到一个新目录.

    启动64位MSVC命令提示符并切换到解压缩Boost的目录.

    跑: bootstrap

    跑: 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)到您的包含路径.

    添加C:\Boost\lib\x64到libs路径.


如果您不想自己构建它们,可以从sourceforge安装预构建的二进制文件:http://sourceforge.net/projects/boost/files/boost-binaries/对于每个版本的boost,每个版本都有安装程序. visual studio版本(32位和64位).
尝试https://sourceforge.net/projects/boost/files/boost-binaries/old-monolithic/,您应该能够在那里找到1.47.0的安装程序,具体取决于您是否需要32位或64位.在那里,你会发现很多DLL,这就是增强的工作原理.但是,只要您将visual studio项目指向正确的目录,那么在那里有多少是无关紧要的,因为它会自动选择所需的正确项目.

3> Aaron Stainb..:

您还可以尝试-j%NUMBER_OF_PROCESSORS%作为参数,它将使用您的所有核心.在我的四核上做得超级快.


这时候一百万....这就是我最终会去为VS2015共同努力的结果:B2 -j%NUMBER_OF_PROCESSORS%工具箱= MSVC-14.0 --build型=完全--libdir = C:\升压\ LIB\x64架构= x86 address-model = 64安装

4> Uri..:

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

    打开物业经理

    右键单击项目节点,然后选择"添加新项目属性表".

    选择一个位置并命名您的属性表(例如c:\ mystuff\boost.props)

    将其他Include和Lib文件夹修改为搜索路径.

此过程具有仅在要显式包含它的项目中包含boost的值.如果您有一个使用boost的新项目,请执行以下操作:

    打开物业经理.

    右键单击项目节点,然后选择"添加现有属性表".

    选择提升属性表.

编辑(从@ jim-fred编辑后):

生成的boost.props文件看起来像这样......



  
  
    D:\boost_1_53_0\
  
  
    $(BOOST_DIR);$(IncludePath)
    $(BOOST_DIR)stage\lib\;$(LibraryPath)
  

它包含用于提升目录位置的用户宏(在本例中为D:\ boost_1_53_0)和另外两个参数:IncludePath和LibraryPath.语句#include 会在相应的目录中找到thread.hpp(在本例中为D:\ boost_1_53_0\boost\thread.hpp).'stage\lib \'目录可能会根据安装目录而改变.

此boost.props文件可以位于D:\boost_1_53_0\目录中.



5> fredoverflow..:

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

#include 

using std::tr1::shared_ptr;

根据James的说法,这也应该有效(在C++ 0x中):

#include 

using std::shared_ptr;


在VS2010中,正在成为C++ 0x一部分的TR1库已全部移入`std`命名空间,因为它们在C++ 0x标准中.(我认为它们可能也在`std :: tr1`命名空间中,为了向后兼容).

6> codenheim..:

这个帖子已经有一段时间了,我想我会在你的特定硬件上添加一些关于尽可能快地构建Boost的东西.

如果你有4或6核分别使用-j5或-j7.当然不是标准版本,也不是-j2,除非你确实有双核心.

我正在运行一个Sandy Bridge Extreme,我的主站上有3​​930K(6核),但旧备份盒上有2600k(4核),趋势是我用N +获得最好的Boost编译时间1构建过程,其中N是物理核心的数量.N + 2达到收益递减点,时间也会增加.

备注:启用超线程,32GB RAM DDR3,三星840 EVO SSD.

-j7 on 6-core(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 on 6-core(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 on 6-core(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核上

配置

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位构建需要更长的时间,我需要对它们进行相同的比较并进行更新.



7> GaMer13..:

还有一点注意:如果要减少编译时间,可以添加标志

-j2

同时运行两个并行构建.这可能会减少它观看一部电影;)


解释如何使用`-j2`会增加你的答案的价值.

8> andrew..:

从以下网址下载增强功能:http : //www.boost.org/users/download/, 例如svn

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

之后: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 
#include 
#include 

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 sharedHello(new Hello);

    return 0;
}

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

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有