【问题标题】:Coping with several Windows SDK versions on build server在构建服务器上处理多个 Windows SDK 版本
【发布时间】:2011-08-22 09:01:26
【问题描述】:

我们有一个 TeamCity 构建服务器,其中设置了几个代理,以便在签入时为几个 c++ 项目构建代码。现在,我们在处理 Windows SDK 依赖关系方面遇到了一些问题,因为

  • 签入太大了,仍然可以与源一起工作 顺利。
  • 不能同时安装几个没有问题。

设置 TeamCity 代理的最简单方法是安装 Windows SDK。但是,安装两个版本的 Windows SDK 是有问题的,因为它似乎会覆盖以前安装的注册表项。另一种方法是从安装中挑选文件并将其放在 rsync-server 等上,但 Windows SDK 安装程序似乎修改了 Visual Studio 二进制文件等,因此感觉也不好。我还与微软核实过,他们强烈建议不要从 SDK 安装中挑选文件。

您是如何在 TeamCity 上设置您的 c++ 项目的?您对我们的情况有何建议?

【问题讨论】:

  • 您在安装多个 SDK 时遇到了什么问题?
  • 例如,它会覆盖一个全局注册表项,例如在运行并行构建时显然无法正常工作。

标签: c++ teamcity winapi build-server


【解决方案1】:

如果您确保 SDK 的版本安装在您使用的每台机器(开发人员和构建机器)上的相同位置,那么您可以在构建脚本的开头添加一个步骤,用于设置当前的 SDK采用。您可以这样做:

  1. 使用注册表设置(如果您随时只有一个构建)
  2. 使用您在项目文件中为 lib、bin 等引用的环境变量。

虽然我们没有使用 TeamCity,但我之前已经很好地看到了这项工作。

【讨论】:

  • 我希望它是那么简单。我总是将环境变量用于像 boost 这样安装到文件夹的库。 Windows SDK 修改注册表、系统文件甚至安装的 Visual Studio 二进制文件... :-S
  • 谷歌搜索后,更改注册表设置似乎是一个可行的解决方案,尽管这显然会阻碍并行构建。
猜你喜欢
  • 2011-10-31
  • 1970-01-01
  • 2019-06-23
  • 2014-09-27
  • 2018-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多