在Visual Studio Online hosted agent上使用CMake构建

在Visual Studio Online hosted agent上使用CMake构建,cmake,azure-devops,Cmake,Azure Devops,如何让VisualStudio在线构建步骤“CMake”在其托管代理池上工作? 表示CMake应该在构建服务器上可用,但“控制面板/代理池/托管代理”中没有“CMake”功能 更多详情: 我正在尝试对包含“CMake”步骤的托管生成进行排队,但出现消息:“请求或定义存在问题,可能会阻止生成运行:找不到具有以下功能的代理:CMake、msbuild、visualstudioQueue是否仍要对生成进行排队?” 在“控制面板/代理池/托管代理”中,我看不到列表中的“cmake”功能 要在VSO托管代

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

更多详情:

  • 我正在尝试对包含“CMake”步骤的托管生成进行排队,但出现消息:“请求或定义存在问题,可能会阻止生成运行:找不到具有以下功能的代理:CMake、msbuild、visualstudioQueue是否仍要对生成进行排队?
  • 在“控制面板/代理池/托管代理”中,我看不到列表中的“cmake”功能
    要在VSO托管代理池上使用CMake进行构建,需要将CMake构建步骤添加到构建定义中。见:


    没错,在托管构建代理功能列表中看不到cmake这一事实意味着托管代理不是为运行cmake构建而设计的

    将CMake生成步骤添加到生成定义时,引擎会自动将CMake添加为需求之一,因为需要:

    “name”:“CMake”,
    “friendlyName”:“CMake”,
    ...
    “要求”:[
    “cmake”
    ],
    
    任务本身假定cmake.exe位于生成代理上的路径中。看看:

    试试看
    {
    $cmake=获取命令cmake.exe
    详细写入('使用{0}'-f$cmake.Path)
    }
    抓住
    {
    抛出(Get-LocalizedString-Key“找不到{0}”-ArgumentList“cmake.exe”)
    }
    
    因此,尽管托管代理在设计上是这样工作的,您无法控制它,但这是您应该做的,以使另一个构建代理符合cmake:

    • 在生成代理上安装cmake,并确保cmake.exe位于路径中
    • 将CMake作为功能添加到生成代理。这可以通过在web UI中添加自定义功能显式实现,也可以通过在构建代理上编写名为“cmake”的环境变量隐式实现,TFS将自动找到它

    希望这能有所帮助。

    微软确认这是一个bug,应该在下一次构建服务器映像更新时修复。在此之前,问题可以通过以下方式解决:

  • 使用下面的命令创建一个.bat,并将其签入源代码管理 设置路径=C:\ProgramFiles(x86)\CMake\bin\;%路径%
  • 在CMAKE任务之前的某个时间,添加一个从步骤1运行.BAT的批处理脚本任务
  • 选中批处理脚本任务的Modify Environment(修改环境)选项(这样,路径更改将持续到CMAKE任务中
  • 使用区域路径C:\Program Files(x86)\CMake\bin\CMake.exe在托管池上添加CMake功能

  • 当然,我这么做了。请检查更新的问题。那么,在托管构建服务器上的软件中出现CMake是Microsoft的错误吗?@OlegMax,嗯,这很有趣。我不知道有一个明确的支持软件列表。在这种情况下,它看起来确实像一个bug。或者是一个不成熟的功能;-)构建代理的版本在不断更新,也许将来的版本会修复它。