【问题标题】:How to configure teamcity build agent to use include files on system?如何配置 teamcity 构建代理以使用系统上的包含文件?
【发布时间】:2016-10-05 19:45:57
【问题描述】:

我有一个使用 boost 标头/库的项目,我想为其创建团队城市构建代理的构建配置(TeamCity 10.0.2 / Windows 10 / Visual Studio 2015)。 boost 标头/库不是项目的一部分(即 boost 不在 git 中)。相反,开发机器上的 boost 头文件/库位于相对于项目文件的位置(例如 $(SolutionDir)........\boost_1_59_0)。

使用构建代理构建失败,因为找不到 boost 头文件。为了解决这个问题,我尝试了:

  • 使用固定位置(例如 C:\boost_1_59_0)并将 boost 放在运行构建代理的机器上的同一位置,但这无济于事。
  • 创建环境变量 INCLUDE 并将其设置为 boost 的位置。它显示在团队城市 Web 界面中构建代理的环境变量中。
  • 无法将 boost 复制到构建代理工作目录,因为构建代理会删除该目录。
  • 将构建代理/teamcity 网络服务器设置为作为非“本地系统”帐户运行。

如何配置构建代理以使其知道在哪里可以找到 boost 库?

【问题讨论】:

    标签: c++ teamcity


    【解决方案1】:

    在您的构建配置中,在sln 构建之前创建一个新构建步骤,它将提升标头复制到正确的文件夹中。使用Command Line Runnerxcopy 命令来执行此操作。

    命令行可以使用源码签出目录:

    xcopy /Y /E "E:\local_boost_install_folder" "%system.teamcity.build.checkoutDir%\src\boost_1_59_0"
    

    另一种方法是将脚本工作目录设置为%system.teamcity.build.checkoutDir%\src\并创建目录链接:

    mklink /D boost_1_59_0 "E:\local_boost_install_folder"
    

    【讨论】:

    • 有趣的建议,但我不认为这是可取的,因为 a)“正确的文件夹”必须是项目的子文件夹(否则它会被删除)和 b)boost 库非常大.复制它们将至少增加 5 分钟的构建时间。
    • @boojum 对。但是你可以创建一个mklink 而不是完整的提升副本。
    • @boojum 我已经更新了答案。在您的脚本中,您可以使用大量内部 TeamCity 变量,因此配置“正确的文件夹”不是问题。至于我自己,我总是使用%system.teamcity.build.checkoutDir% 作为根文件夹进行进一步的文件操作
    • 优秀的符号链接作品。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    相关资源
    最近更新 更多