在Visual Studio Online托管代理上使用CMake构建

4
如何在Visual Studio Online托管的代理池上使用"CMake"构建步骤? 文档显示CMake应该在构建服务器上可用,但是在"控制面板/代理池/托管代理"中找不到"cmake"能力。
更多细节: 1. 我正在尝试排队包含"CMake"步骤的托管构建,但出现消息:"请求或定义存在问题,可能会阻止构建运行:未找到以下能力的代理:cmake、msbuild、visualstudio仍要排队构建吗?" 2. 在"控制面板/代理池/托管代理"中查看时,我无法在列表中看到"cmake"能力。 capabilities list
3个回答

4

你没有在托管构建代理能力列表中看到cmake,这意味着托管代理不适用于运行cmake构建。

当您向构建定义添加CMake构建步骤时,引擎会自动将cmake添加为一个需求项,因为任务定义要求如此:

"name": "CMake",
"friendlyName": "CMake",
...
"demands" : [
    "cmake"
],

这个任务假定在构建代理上的 PATH 中有 cmake.exe。看一下 this code

try
{
    $cmake = Get-Command cmake.exe
    Write-Verbose ('Using {0}' -f $cmake.Path)
}
catch
{
    throw (Get-LocalizedString -Key 'Unable to find {0}' -ArgumentList 'cmake.exe')
}

因此,尽管托管代理按照设计工作,并且您无法控制此操作,但是为了使另一个构建代理符合cmake的要求,您应该执行以下操作:

  • 在构建代理上安装cmake,并确保cmake.exe在路径中
  • 将CMake添加为构建代理的功能。可以通过在Web UI中添加自定义功能来明确执行此操作,也可以通过在构建代理上编写名为“cmake”的环境变量来隐式执行此操作,TFS会自动找到它。

希望这能帮到您。


那么托管构建服务器上的软件列表中存在CMake是微软的错误吗? - OlegMax
@OlegMax,嗯,这很有趣。我不知道有一个明确的支持软件列表这一事实。在这种情况下,它看起来像是个bug。或者是一个未完成的功能;-)构建代理的版本不断更新,也许未来的版本会修复它。 - Yan Sklyarenko

2
微软已经确认这是一个问题,将在下一个构建服务器镜像更新中修复。在那之前,可以通过以下方式解决该问题:
  1. 创建一个包含以下命令的 .bat 文件,并将其检入源代码控制: SET PATH=C:\Program Files (x86)\CMake\bin\;%PATH%
  2. 添加一个批处理脚本任务,在 CMAKE 任务之前运行步骤 1 中的 .BAT 文件。
  3. 选中批处理脚本任务的“修改环境”选项(以便 PATH 更改持续到 CMAKE 任务)。
  4. 在托管池上添加 CMake 能力,路径为 C:\Program Files (x86)\CMake\bin\cmake.exe

0
在VSO托管的代理池上使用CMake构建,您需要将CMake构建步骤添加到构建定义中。请参见:

enter image description here


1
当然,我已经做了。请检查更新后的问题。 - OlegMax

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接