2015-09-27 117 views
2

如何让Visual Studio Online构建步骤“CMake”在其托管代理池上工作? Documentation表示CMake应该在构建服务器上可用,但“控制面板/代理池/托管代理”中没有“cmake”功能。在Visual Studio Online托管代理上使用CMake构建

更多细节:

  1. 我试图排队托管构建包含“CMake的”一步,但出现消息:“有与请求或定义可能阻止修建从运行的问题:没有代理可以找到具有以下功能:cmake,msbuild,visualstudioQueue生成呢?
  2. 寻找”控制面板/代理池/托管代理“我看不到在列表中的”cmake“功能。 capabilities list
+0

什么不起作用? –

回答

0

它被确认为微软的一个错误,它应该在下一次构建服务器映像更新中修复。直到那一刻问题可以用此方式解决:

  1. 创建与它下面的命令.BAT,并检查它的源代码控制 SET PATH = C:\ Program Files文件(x86)的\ CMake的\ BIN \ ;%PATH%
  2. 添加BATCH SCRIPT任务,该任务在CMAKE任务之前的某个时间从步骤1开始运行.BAT。
  3. 检查批处理脚本任务的修改环境选项(这是使路径更改持续到CMake的任务
  4. 添加带有区域路径C托管池CMake的能力:\程序文件(x86)\ CMake的\ BIN \ cmake的。exe
0

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

enter image description here

+0

当然,我做到了。请检查更新后的问题。 – OlegMax

3

权,但事实上,你看不到的CMake在该托管代理托管生成代理能力的手段清单的目的不是要运行cmake构建。

当您添加的CMake构建步骤的构建定义时,发动机会自动添加的CMake作为诉求之一,因为the task definition要求:

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

任务本身假定cmake.exe在PATH在构建代理上。看看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将自动找到它。

希望这会有所帮助。

+0

因此,在托管构建服务器上的[list](https://www.visualstudio.com/en-us/get-started/build/hosted-agent-pool)软件中存在CMake是微软的错误? – OlegMax

+0

@OlegMax,嗯,这很有趣。我没有意识到有一个明确的支持软件列表。在这种情况下,它看起来像一个错误。或者是一个半熟的功能;-)构建代理的版本不断更新,也许未来的版本将修复它。 –

相关问题