在Windows上使用Boost(Visual Studio)

我想开始使用Boost。 我正在Visual Studio中编程一个C ++程序(显然是在Windows机器上)。

Boost的入门指南说:

获得Boost副本最简单的方法是使用安装程序。 本“入门指南”的Boost网站版本将提供有关安装程序可用的date信息,或者查看Boost下载或由BoostPro Computing提供的安装程序。 如果您使用Microsoft Visual Studio我们特别推荐使用安装程序 ,因为安装程序可以下载并安装预编译的库二进制文件,从而为您节省了构build它们的麻烦。

我有点不确定是否要遵循这个build议,或者只是自己下载和构build一切。 我用安装程序看到的潜在问题是:

  1. 事情不再是独立的(即每个团队成员都必须安装Boost,然后configurationVisual Studio来识别它)。
  2. 我无法保持在源代码控制下的Boost(我最好喜欢它是我的源代码pipe理中的所有其他文件)。 ( 编辑 :由评论来看,它看起来像提升是一个很大的(如在5 GB!),所以显然我需要保持在源代码pipe理的一部分)。

所以我的问题是,我只是偏执,应该去安装路线,或者我是正确的,应该自己build立呢? 如果任何人有任何与Boost和Visual Studio合作的经验,我将不胜感激,如果他们可以分享他们的意见(如果它应该是自己build立,任何提示也将不胜感激,例如,我应该只复制每个文件我实际使用?等)。

注意:

关于StackOverflow的一些类似的问题,但没有明确提出这个问题,让我觉得我不应该使用安装程序,这就是为什么我明确要求在这里。 作为参考,这些是问题:

  1. 增强链接,Visual Studio和版本控制
  2. 包括与C ++源相关的Boost库(使用Visual Studio)

Solutions Collecting From Web of "在Windows上使用Boost(Visual Studio)"

确保每个人都有正确配置的一个好方法是使用svn外部。 你可以创建类似/trunk/boost1.35东西,然后你可以用svn external来指向。

这样,随着新版本的提升出来,你可以重新命名你的svn外部到/trunk/boost1.40

在你的仓库中,你的svn外部指向仓库中的那个svn文件夹。 例子/depends/boost

我们亲自将boost头文件保存在源代码控制之下,但将libs保存为我们要求所有人下载的zip文件。 我们有一个类似于下面的BOOST_LIB的环境变量,我们将其指向当前的boost库目录。

我建议使用安装程序。

自己建设并不难。 这里是程序:

    将boost下载到C:\ Program Files \ boost \ boost_1_40_0 

 Open the command prompt and change your current directory to the Boost root directory bootstrap .\bjam The library binaries are now sprinkled through the folders under C:\Program Files\boost\boost_1_40_0\bin.v2 Find the required libraries and copy them to C:\Program Files\boost\boost_1_40_0\lib ( Do not confuse folders called lib and libs! ) 

但是,这个过程足够慢并且足够复杂,特别是最后一步,你和其他人可能会偶尔搞砸一些东西,结果浪费了很多时间来排除神秘的构建错误 – 这是我的经验。

我在Windows下建立了Boost。 它的“bjam”安装工具可以自动检测MSVC并将其用于编译; 我不会有任何保留建设自己的保留。 这实际上比“./configure && make && make install”要稍微困难一些。

建立自己甚至可能是必要的 ,因为在线提供的Boost库不包括ICU(Unicode)支持,例如boost_regex库。

  1. 事情不再是独立的(即每个团队成员都必须安装Boost,然后配置Visual Studio来识别它)。
  2. 我无法在源代码控制下保持Boost(我最好喜欢它是我的源代码管理中的所有其他文件)。

在将Boost放在源代码控制之前,请记住编译的库占用几个GB。 (我的Boost文件夹大约是5GB)可能值得让每个人都为自己安装Boost。

除此之外,安装程序应该正常工作,但自己编译也是非常简单的。

Boost默认安装到特定于版本的文件夹(如果您自己编译并且使用安装程序),所以很容易将多个版本并排安装。 因此,如果您的团队将Boost升级到新版本,则可以简单地在.sln或.vsprops文件中更改包含路径,以便编译器搜索新版本 – 如果同事没有安装正确的版本,他只是将无法建立(这可能是更好的默默建设与旧版本)

还有一件事要考虑的是你是否需要全部或部分提升。 我们在这里做的是将源代码放在版本控制中,并为我们实际想要使用的库创建一个包装器项目。 单个库的编写干净到足以让所有的cpp文件放到一个新的visual studio项目中。 您可能需要设置顶级配置标题(我想我把它设置为一个强制包含),并且整个构建都非常容易。 将此项目作为解决方案的依赖项添加,这意味着您可以将所有的二进制文件保留在SCM之外,并确保每个人都始终处于最新状态。

无论如何,大部分的提升都是头文件,所以你可能会发现只有少量的库需要构建。 这种方法使您更容易地匹配您的VS项目设置。

有几点不能保持在源代码控制之下:

  1. 提升是巨大的。
  2. 编译是不平凡的(特别是对于几种配置)
  3. 编译很长(你不希望每个开发者都这样做)

我个人不会打扰自己构建它 – 在Linux上,例如我总是使用发行版提供的软件包。

我会使用安装程序,除非您需要自定义生成标志。 这是非常容易的,建设(至少是我上次做的)并不是最明显的过程。 没有什么能阻止你下载与安装程序提供的boost版本相匹配的源代码,并将其放入版本控制中。 这是我以前用于其他库的方法(nss,iplanet sdk),它运行良好。

我会建议首先运行bootstrap.bat – 它会建立bjam.exe然后

 bjam --stagedir="c:\Program Files\Boost" --build-type=complete --toolset=msvc-9.0 --with-regex --with-date_time --with-thread --with-signals --with-system --with-filesystem --with-program_options stage bjam --stagedir="c:\Program Files\Boost" --build-type=complete --toolset=msvc-10.0 --with-regex --with-date_time --with-thread --with-signals --with-system --with-filesystem --with-program_options stage .. 

你只需要指定正确的工具集。 它会把所有的二进制文件放到.. \ lib文件夹中。

我们实际上创建了我们自己的安装程序,只有我们在工作中使用的Boost的部分,并将其发给IT人员安装在开发人员的机器上。 我们也在修订控制中保留了这个boost的副本,所以我们可以正确地跟踪它和系统其他部分之间的依赖关系,并自己构建它。

我认为在工作上这是两个世界中最糟糕的。 但它确实给了我们最大的控制。

我会说,只是使升压安装作为您的项目的先决条件。 手动安装只需几分钟,一次少量的步骤。 最大型的复杂项目, 最终最终会占用Boost的依赖,所以它并不是不寻常的前提。 当然,自动化它是微不足道的。 优点是:

  1. 您不要在您的回购中添加巨大的Boost分布
  2. 你不必挑选你使用的东西
  3. 其他项目可以共享安装
  4. 一次性安装也负责构建header + cpp库

对于Visual Studio 2015和最新的Boost版本,以下是我们为团队所做的分步说明:

https://stackoverflow.com/a/39628306/207661