使用boost - 将它放在源代码管理中还是让任何开发人员自己安装?

Her*_*ess 14 c++ svn version-control boost

目前,我们在第三方目录下的SVN中使用Boost.问题在于更新整棵树需要花费很多时间,而且我责怪Boost的大量文件(以及其他罪魁祸首).

或者,我可以让任何开发人员自己安装它,但是我必须强迫他们安装到同一个位置(这非常难看......).

什么是首选?如何处理安装位置问题?
还有其他选择吗?

我在Windows下使用VS2008(很快VS2010)(而不是VS2008 ......).

编辑:我们已迁移到VS2010并正在使用属性表.请参阅下面的答案.
Ralf使用批处理文件有很好的非常详细的方法.
其他方法仍然受欢迎...... :)

kar*_*lip 8

由于您的应用程序依赖于boost,我认为有一个专门用于存储它的内部SVN项目是值得的.这保证了每个人都将使用相同版本的库并防止发生事故.

如果您使用在系统上构建和安装boost的命令将INSTALL文件/脚本添加到项目中,您将解决问题,而其他开发人员会很高兴他们只需要运行脚本就可以在其上正确安装所有内容系统.


Her*_*ess 0

我接受了拉尔夫的提议,使用属性表,以下是完整的解决方案。请注意,这仅限于 VS2010

  • vsprops 文件位于我的源代码管理的 3rd_party_folder\boost 中。
    在属性表中,定义了两个宏 -boost_include_pathboost_lib_path
    这些宏中的每一个都使用$(MSBuildThisFileDirectory)来引用它驻留在本地计算机上的路径,并且它假定boost_1_46boost_1_46\stage\lib位于该 (3rd_party_folder\boos) 目录下。最后,Additional Include directoriesAdditional Library directories分别使用这些宏。
  • boost 位于组织内部的网络共享处,并且在 3rd_party_folder\boost 处有一个简单的 xcopy 批处理文件,它将 boost 复制到那里(以获取本地副本)。
  • 我已将属性表应用于每个需要提升的项目。请注意,如果它在属性表之前评估Microsoft.Cpp.Win32.user(您可以在其他属性表之间向上或向下移动它),则每个用户都可以在本地覆盖值。

优点:

  • 所有需要提升的项目的单点定义。下次升级提升会更快。此外,添加 boost 范围的定义很容易(例如,BOOST_FILESYSTEM_VERSION=2让我免于在所有项目中手动定义)。
  • boost_include_path每个用户都可以通过重新定义和boost_lib_pathat Microsoft.Cpp.Win32.user,甚至通过显式定义 boost 来本地覆盖 boost 位置。
  • boost 不在源代码控制中。这极大地提高了我的 SVN 性能。

缺点:

  • 仍然需要在每台新机器上运行首次设置(简单地增强源代码控制并不需要这样做)。另一方面,它是一次性批量获得提升。

干杯