【问题标题】:Boost linking, Visual Studio & version controlBoost 链接、Visual Studio 和版本控制
【发布时间】:2010-11-23 00:45:12
【问题描述】:

我正在使用 Visual Studio 2008,并用 C++ 编写一些东西。我正在使用 Boost 库(仅是 not 标头)。

因此,链接到 Boost 需要将目录添加到 Boost 二进制文件到项目的“附加链接器路径”设置中。

但是,这不会与源代码管理冲突吗?如果我签入项目文件,我的计算机上的 Boost 库的绝对路径是否也包含在其中?

我显然不希望这种情况发生,那我该怎么办?仅将 Boost 目录添加到“Visual C++ 目录/库”是行不通的。

【问题讨论】:

  • 顺便说一句,头文件也是如此。

标签: c++ visual-studio version-control boost


【解决方案1】:

将 Boost 路径添加到“Visual C++ 目录”应该有效。 您应该添加包含路径<Full path here>\boost_1_39_0(最后没有提升)
和库路径<Full path here>\boost_1_39_0\bin.v2\lib(bin.v2 是一个阶段目录,在您的情况下可能会有所不同)。

就个人而言,我将 boost 源存储在我的源代码管理中,并在项目设置中使用相对路径。

【讨论】:

  • 它不仅应该工作,而且真的可以。唯一的缺点是它不再是独立的,即需要点击配置。对我来说,这个是一个很好的展示,所以我还签入了 3rd 方库。替代方法是修改构建脚本本身。不过,VS IDE 有自己的一套问题。
【解决方案2】:

我们使用包含第 3 方库的存储库,然后使用 svn:externals 将所需部分签出到项目的基本目录中,最后使用相对路径在项目文件中添加其他包含和库目录。效果很好,唯一的缺点是您最终可能会在硬盘上获得多个增强副本。使用联结(Windows 版本的符号链接仅适用于目录,至少从 Win2k 开始工作,不确定 NT)你可以摆脱浪费的空间。

【讨论】:

    【解决方案3】:

    我们将项目使用的所有 3rdparty 头文件和库放在源代码管理的项目树中。这意味着我们使用源代码跟踪库的版本。

    然后我们在项目属性中引用 include 和 source 目录。我们不使用 Visual C++ 目录,因为这会过度依赖不同开发人员系统上文件的位置,并且无法跟踪库的版本。

    唯一的例外是使用 vc6 开发时的平台 sdk。

    无耻插件:我们现在使用 CMake 管理我们的 vc 项目设置,它使这些事情变得更加容易,尤其是对于大型项目。

    【讨论】:

      【解决方案4】:

      您以每台计算机的方式而不是每项目的方式向 VS 介绍 Boost。就像 directx 和其他非项目特定的库一样。我们认为在多个项目中使用 boost 是合理的。

      我们不会在我们的项目 SCM 中跟踪外部库源,除非我们熟悉实现细节(修补它或其他)。对于 boost、directx、windows sdk,我们只需要您在设置开发环境时运行相应的安装程序并设置 VC++ Directories

      【讨论】:

      • 在升级 boost 版本后如何构建旧版本的项目?
      【解决方案5】:

      我将BOOST_ROOT 环境变量用于一些东西,它工作正常。您必须手动创建它,然后将项目文件中的路径设置为“$(BOOST_ROOT)\include”和“$(BOOST_ROOT)\lib”(或您的布局使用的任何内容)。然后每个人都必须在他们的机器上设置 BOOST_ROOT 以指向他们的 Boost 安装。

      【讨论】:

      • 如果你使用这种方式,你应该注意有可能为不同的项目使用不同的并发 boost 版本(对于 Visual Studio 范围的配置也是一个问题)。
      • 按照我的 Boost 布局方式,所有库都在 \lib 目录中(版本在文件名中),每个版本在 \include 下都有一个目录(即 \include\boost-1.39) .然后项目文件包含“$(BOOST_ROOT)\include\boost-1.39”和“$(BOOST_ROOT)\lib”。
      猜你喜欢
      • 2018-02-15
      • 1970-01-01
      • 2017-08-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-12
      • 1970-01-01
      • 1970-01-01
      • 2016-02-01
      相关资源
      最近更新 更多