【问题标题】:Build with CMake on Visual Studio Online hosted agent在 Visual Studio Online 托管代理上使用 CMake 构建
【发布时间】:2015-09-27 08:02:35
【问题描述】:

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

更多细节:

  1. 我正在尝试对包含“CMake”步骤的托管构建进行排队,但出现消息:“请求或定义存在问题,可能会阻止构建运行:无法找到以下代理能力:cmake、msbuild、visualstudioQueue 还是要构建吗?"
  2. 查看“控制面板/代理池/托管代理”我在列表中看不到“cmake”功能。

【问题讨论】:

    标签: cmake azure-devops


    【解决方案1】:

    是的,您在托管构建代理功能列表中看不到 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 会自动找到它。

    希望这会有所帮助。

    【讨论】:

    • 那么在托管构建服务器上的软件list 中存在 CMake 是微软的错误吗?
    • @OlegMax,嗯,这很有趣。我不知道有一个明确的受支持软件列表这一事实。在这种情况下,它看起来确实像一个错误。或者是一个半生不熟的功能;-) 构建代理的版本不断更新,也许未来的版本会修复它。
    【解决方案2】:

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

    1. 创建一个包含以下命令的 .bat 并将其签入源代码管理 SET PATH=C:\Program Files (x86)\CMake\bin\;%PATH%
    2. 添加一个 BATCH SCRIPT 任务,该任务在 CMAKE 任务之前的某个时间运行步骤 1 中的 .BAT。
    3. 检查 BATCH SCRIPT 任务的修改环境选项(这样 PATH 更改会持续到 CMAKE 任务中。
    4. 在区域路径 C:\Program Files (x86)\CMake\bin\cmake.exe 的托管池上添加 CMake 功能

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 当然,我做到了。请检查更新后的问题。
      猜你喜欢
      • 2016-02-17
      • 2014-04-17
      • 1970-01-01
      • 2015-08-30
      • 1970-01-01
      • 1970-01-01
      • 2015-02-26
      • 2014-11-14
      • 1970-01-01
      相关资源
      最近更新 更多