如何在团队环境中管理大型C ++依赖项?

时间:2013-06-19 13:59:16

标签: c++ build-automation tfsbuild tfs2012 dependency-management

背景

在我的职业生涯中,我惊讶于我看到有多少项目在Visual Studio中编译和执行项目是一个真正的挑战。问题的根源通常是由于:缺少依赖性,缺少文档,缺少项目引用等等。

为了避免这些麻烦,我尝试自动化项目/解决方案,以便:

  1. 在开发人员计算机上编译项目时自动设置运行时环境(例如,使用批处理脚本导入缺少的Windows注册表项)
  2. 编译项​​目时,会自动检索正确的依赖项(在构建计算机和开发人员计算机上)
  3. 问题

    迄今为止,我采用这种方法取得了相当大的成功。但是,我最近获得了一个依赖于Microsoft Windows SDK的本机C ++项目。在编译时,项目使用Windows环境变量来查找缺少的依赖项(例如Microsoft Windows SDK)。

    据我所知,使用环境变量是以往的工作方式。但是,依靠软件开发人员来配置开发环境:

    • 您假设他们将正确配置环境
    • 当开发人员花费更多时间进行开发时,开发人员会浪费时间进行配置。

    我不想讨论让开发人员配置开发环境的优点,而是我想知道:

      

    鉴于目前存在的技术(例如TFS),在团队环境中为C ++项目处理大型依赖关系(例如Windows SDK)的可靠且可重复的方法是什么?

    潜在解决方案

    1. 继续使用环境变量
      • 高级:一旦安装了依赖项,构建机器就很容易编译项目
      • Dis:您必须花时间记录以确保您可以从头开始配置构建计算机(例如,步骤1:安装依赖关系A,步骤2:安装依赖关系B等)
      • Dis:您依靠 magic 环境变量来指向正确的目标。
      • Dis:开发人员正在浪费时间配置他们应该开发的时间
    2. 检查依赖关系到TFS
      • 高级:一切都保存在一个集中的位置
      • 高级:按设计,源代码管理保留了历史记录
      • 高级:从某种意义上说,源代码控制使事情自我记录
      • Dis:在构建机器上进行编译现在需要相当长的时间来构建机器 工作区必须从TFS重复检索Windows SDK
    3. 其他吗
    4. CONTEXT

      • 编程语言:非托管C ++
      • 来源控制:TFS 2012
      • 依赖关系:
        • Microsoft Windows SDK(~416Mb)
        • in house libraries
      • 我对如何管理/配置TFS构建机器知之甚少。

      参考

1 个答案:

答案 0 :(得分:1)

我记得在为一家安全公司工作时,该团队有一个脚本,通常在您编译后立即将所有依赖项复制到您的特定文件夹中。然而,对于一个MFC项目来说,它的构建属性让我感到困惑。

参考似乎非常有用,谢谢