Azure Pipeline Windows环境下CMake无法找到Ninja的求助
解决Azure Pipeline Windows-2022环境下CMake找不到Ninja的问题
核心原因
你在bash步骤里用export PATH添加的Ninja路径仅对当前bash会话有效,后续的CMake构建步骤(无论使用何种shell)都无法继承这个临时环境变量,导致CMake找不到Ninja。
解决方案:全局设置PATH环境变量
修改安装Ninja的bash脚本,使用Azure Pipeline的内置命令将Ninja路径写入全局环境变量,让所有后续步骤都能访问到。
修改后的YAML片段:
- job: mingw pool: vmImage: windows-2022 steps: - checkout: self - task: UsePythonVersion@0 inputs: versionSpec: '3.8' addToPath: true - bash: | curl -LO https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip mkdir -p C:/ninja unzip -q ninja-win.zip -d C:/ninja # 关键:将Ninja路径写入全局PATH变量 echo "##vso[task.setvariable variable=PATH;]C:\ninja;$PATH" which ninja ls -la /c/ninja displayName: 'Install Ninja' # 示例CMake构建步骤 - bash: | cmake -G Ninja .. ninja displayName: 'Build with CMake and Ninja'
可选:用PowerShell适配Windows环境
如果bash的路径处理仍有问题,可以改用PowerShell步骤安装Ninja,更贴合Windows系统的环境变量逻辑:
- powershell: | Invoke-WebRequest -Uri "https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip" -OutFile "ninja-win.zip" New-Item -ItemType Directory -Force -Path C:\ninja Expand-Archive -Path ninja-win.zip -DestinationPath C:\ninja -Force $env:PATH = "C:\ninja;" + $env:PATH echo "##vso[task.setvariable variable=PATH;]$env:PATH" ninja --version displayName: 'Install Ninja via PowerShell'
验证步骤
在CMake构建前添加一个验证步骤,确认Ninja已全局可用:
- bash: ninja --version displayName: 'Verify Ninja availability'
内容的提问来源于stack exchange,提问作者Out of Control
相关产品推荐
相关产品推荐

