【问题标题】:CMAKE build task failing to find cmake commandCMAKE 构建任务找不到 cmake 命令
【发布时间】:2017-08-09 00:58:50
【问题描述】:

我通过 Windows 上的 vsagent 配置了一个基于 CMAKE 的构建,直到最近它运行良好。它开始失败并出现以下错误:

已更新调试输出

================================================ ================================ 任务:CMake 描述:使用 CMake 跨平台构建系统构建 版本:1.0.25 作者:微软公司

帮助:More Information

agent.workFolder=C:\vsagent_work 加载输入和端点 加载 ENDPOINT_AUTH_PARAMETER_SYSTEMVSSCONNECTION_ACCESSTOKEN 加载 ENDPOINT_AUTH_SCHEME_SYSTEMVSSCONNECTION 加载 ENDPOINT_AUTH_SYSTEMVSSCONNECTION 加载 INPUT_CMAKEARGS 加载 INPUT_CWD 已加载 5 检查路径:C:\vsagent_work_tasks\CMake_7d831c3c-3c68-459a-a5c9-bde6e659596c\1.0.25\task.json 将资源文件设置为:C:\vsagent_work_tasks\CMake_7d831c3c-3c68-459a-a5c9-bde6e659596c\1.0.25\task.json system.culture=zh-CN pathSegments 的绝对路径:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.10.25017\bin\HostX86\x86/cmake = C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.10.25017\bin\HostX86\x86\cmake pathSegments 的绝对路径:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCPackages/cmake = C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7 \IDE\VC\VCPackages\cmake pathSegments 的绝对路径:C:\Program Files (x86)\Microsoft SDKs\TypeScript\2.1/cmake = C:\Program Files (x86)\Microsoft SDKs\TypeScript\2.1\cmake pathSegments 的绝对路径:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow/cmake = C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise \Common7\IDE\CommonExtensions\Microsoft\TestWindow\cmake pathSegments 的绝对路径:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer/cmake = C:\Program Files (x86)\Microsoft Visual Studio\ 2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\cmake pathSegments 的绝对路径:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\bin\Roslyn/cmake = C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild \15.0\bin\Roslyn\cmake pathSegments 的绝对路径:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Team Tools\Performance Tools/cmake = C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Team Tools\性能工具\cmake pathSegments 的绝对路径:C:\Program Files (x86)\Microsoft Visual Studio\Shared\Common\VSPerfCollectionTools/cmake = C:\Program Files (x86)\Microsoft Visual Studio\Shared\Common\VSPerfCollectionTools\cmake pathSegments 的绝对路径:C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools/cmake = C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A \bin\NETFX 4.6.1 工具\cmake pathSegments 的绝对路径:C:\Program Files (x86)\Windows Kits\10\bin\x86/cmake = C:\Program Files (x86)\Windows Kits\10\bin\x86\cmake pathSegments 的绝对路径:C:\Program Files (x86)\Windows Kits\10\bin\10.0.14393.0\x86/cmake = C:\Program Files (x86)\Windows Kits\10\bin\10.0.14393.0\x86 \cmake pathSegments 的绝对路径:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\bin/cmake = C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0 \bin\cmake pathSegments 的绝对路径:C:\Windows\Microsoft.NET\Framework\v4.0.30319/cmake = C:\Windows\Microsoft.NET\Framework\v4.0.30319\cmake pathSegments 的绝对路径:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE/cmake = C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\cmake pathSegments 的绝对路径:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Tools/cmake = C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\cmake pathSegments 的绝对路径:C:\vsagent\externals\git\cmd/cmake = C:\vsagent\externals\git\cmd\cmake pathSegments 的绝对路径:C:\WINDOWS\system32/cmake = C:\WINDOWS\system32\cmake pathSegments 的绝对路径:C:\WINDOWS/cmake = C:\WINDOWS\cmake pathSegments 的绝对路径:C:\WINDOWS\System32\Wbem/cmake = C:\WINDOWS\System32\Wbem\cmake pathSegments 的绝对路径:C:\WINDOWS\System32\WindowsPowerShell\v1.0/cmake = C:\WINDOWS\System32\WindowsPowerShell\v1.0\cmake pathSegments 的绝对路径:C:\ProgramData\chocolatey\bin/cmake = C:\ProgramData\chocolatey\bin\cmake pathSegments 的绝对路径:C:\Program Files\Git\cmd/cmake = C:\Program Files\Git\cmd\cmake pathSegments 的绝对路径:C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit/cmake = C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\cmake pathSegments 的绝对路径:C:\Program Files\Microsoft SQL Server\130\Tools\Binn/cmake = C:\Program Files\Microsoft SQL Server\130\Tools\Binn\cmake pathSegments 的绝对路径:C:\Program Files\dotnet/cmake = C:\Program Files\dotnet\cmake pathSegments 的绝对路径:C:\tools\go\bin/cmake = C:\tools\go\bin\cmake pathSegments 的绝对路径:c:\vsagent\scripts/cmake = c:\vsagent\scripts\cmake pathSegments 的绝对路径:"C:\Program Files\CMake\bin"/cmake = C:\vsagent_work\1\s\"C:\Program Files\CMake\bin"\cmake pathSegments 的绝对路径:C:\WINDOWS\ServiceProfiles\NetworkService\AppData\Local\Microsoft\WindowsApps/cmake = C:\WINDOWS\ServiceProfiles\NetworkService\AppData\Local\Microsoft\WindowsApps\cmake pathSegments 的绝对路径:C:\vsagent\bin/cmake = C:\vsagent\bin\cmake pathSegments 的绝对路径:C:\vsagent\bin/cmake = C:\vsagent\bin\cmake pathSegments 的绝对路径:cmake = C:\vsagent_work\1\s\cmake 检查路径:C:\vsagent_work\1\s\cmake cmake=C:\vsagent_work\1\s\cmake cwd=C:\vsagent_work\1\s\build 测试目录'C:\vsagent_work\1\s\build' 测试目录 'C:\vsagent_work\1\s' mkdir 'C:\vsagent_work\1\s\build' cmakeArgs=.. -DCMAKE_TOOLCHAIN_FILE=C:\src\misc\vcpkg\scripts\buildsystems\vcpkg.cmake -DCMAKE_BUILD_TYPE=Debug -G "Visual Studio 15 2017 Win64" C:\vsagent_work\1\s\cmake 参数:.. -DCMAKE_TOOLCHAIN_FILE=C:\src\misc\vcpkg\scripts\buildsystems\vcpkg.cmake -DCMAKE_BUILD_TYPE=Debug -G "Visual Studio 15 2017 Win64" 执行工具:C:\vsagent_work\1\s\cmake 论据: .. -DCMAKE_TOOLCHAIN_FILE=C:\src\misc\vcpkg\scripts\buildsystems\vcpkg.cmake -DCMAKE_BUILD_TYPE=调试 -G 视觉工作室 15 2017 Win64 C:\vsagent_work\1\s\cmake .. -DCMAKE_TOOLCHAIN_FILE=C:\src\misc\vcpkg\scripts\buildsystems\vcpkg.cmake -DCMAKE_BUILD_TYPE=Debug -G Visual Studio 15 2017 Win64 C:\vsagent_work\1\s\cmake 失败。生成 C:\vsagent_work\1\s\cmake ENOENT 已处理:##vso[task.issue type=error;]C:\vsagent_work\1\s\cmake 失败。生成 C:\vsagent_work\1\s\cmake ENOENT 任务结果:失败 CMake 失败并出现错误:C:\vsagent_work\1\s\cmake 失败。生成 C:\vsagent_work\1\s\cmake ENOENT 已处理:##vso[task.issue type=error;]CMake 失败并出现错误:C:\vsagent_work\1\s\cmake failed。生成 C:\vsagent_work\1\s\cmake ENOENT 已处理:##vso[task.complete result=Failed;]CMake 失败并出现错误:C:\vsagent_work\1\s\cmake failed。生成 C:\vsagent_work\1\s\cmake ENOENT rc:-4058 成功:假

问题是它正在尝试运行:

[命令]C:\vsagent_work\6\s\cmake

最后一个有效的构建是运行不同的命令:

[命令]c:\program files\cmake\bin\cmake.exe

两个版本都运行 vsagent 版本 2.114.0。两个版本都运行 CMAKE Task 1.0.25 版。这两个构建之间没有构建配置更改。可能安装了操作系统更新,但我在更新历史记录中找不到任何内容。

事实证明,在构建失败之前,cmake 不在系统 PATH 中。它位于安装 vsagent 的用户的用户路径中。故障开始后,我将 cmake 目录添加到系统 PATH 中,但这没有任何区别。构建代理的功能中列出的当前 PATH 是:

C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;C:\ Program Files\Git\cmd;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\dotnet \;C:\tools\go\bin;c:\vsagent\scripts;"C:\Program Files\CMake\bin";C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Microsoft\WindowsApps;C:\ vsagent\bin

作为最后一个数据点,我们在 repo 的根目录下确实有一个 cmake 目录,因此 c:\vsagent_work\6\s\cmake 是磁盘上的一个目录。

有没有人知道可能发生了什么变化或对如何诊断问题有任何想法?为什么 vsagent 不使用系统 PATH 中的 cmake?

更新:我已经重新安装了代理,现在是 2.120.1 版

【问题讨论】:

  • 尝试在这台机器上设置一个新的构建代理,然后用这个代理排队构建并检查结果。
  • 将“system.debug”变量设置为“true”的构建排队,然后在此处共享 cmake 步骤的构建日志。您还可以检查构建代理的功能设置吗?
  • 我已经用调试输出更新了这个问题。我还升级了代理,但仍然重现问题。您希望我检查哪些功能?

标签: azure-pipelines


【解决方案1】:

这是周围的引号

"c:\程序文件\cmake\bin"

在导致问题的 PATH 变量中。 path.resolve() 把它变成

C:\vsagent\_work\1\s\"C:\Program Files\CMake\bin"

什么时候

C:\vsagent\_work\1\s

是当前工作目录。删除引号可以解决问题。

https://github.com/Microsoft/vsts-task-lib/blob/d487d3a0eb602c207bb4c0cf77064ed7df51fbac/node/lib/task.ts#L656 也有一个错误。呼吁

stats(tool).isFile

应该以 '()' 结尾,因为 isFile 是一个函数。因为当前工作目录中有一个 'cmake' 目录,缺少括号会导致 if 语句解析为 true。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 2019-02-04
    • 1970-01-01
    相关资源
    最近更新 更多