You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在GitHub Actions中使用CMake构建ARM64EC项目时编译器缺失问题

解决GitHub Actions构建ARM64EC CMake项目找不到编译器的问题

问题根源

  1. GitHub Actions的windows-latest镜像默认未安装ARM64EC相关的VC工具链组件
  2. 硬编码VS Enterprise路径与镜像中实际安装的VS版本不匹配(镜像默认使用Community版)
  3. 若VC环境脚本调用失败,后续CMake命令无法获取到正确的编译器路径

解决方案

1. 安装ARM64EC必要组件

在GitHub Actions中添加步骤,安装ARM64EC工具链及依赖组件:

- name: Install ARM64EC VC Tools
  uses: microsoft/setup-msbuild@v1
  with:
    vs-version: '17.x'
    components: |
      Microsoft.VisualStudio.Component.VC.Tools.ARM64EC
      Microsoft.VisualStudio.Component.VC.Tools.ARM64
      Microsoft.VisualStudio.Component.Windows11SDK.22621

2. 动态获取VC环境脚本路径

避免硬编码VS路径,用vswhere自动查找最新VS对应的vcvarsall.bat:
修改构建步骤为:

- name: Build ARM64EC project
  shell: pwsh
  run: |
    # 获取vcvarsall.bat路径
    $vcvarsPath = & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" `
      -products * `
      -latest `
      -requires Microsoft.VisualStudio.Component.VC.Tools.ARM64EC `
      -find "VC\Auxiliary\Build\vcvarsall.bat"
    # 配置交叉编译环境
    & $vcvarsPath amd64_arm64
    # 执行CMake配置和构建
    cmake -B ${{github.workspace}}/build --preset arm64ec
    cmake --build ${{github.workspace}}/build --config Release

3. 优化CMakePresets配置

调整架构策略,确保CMake正确识别ARM64EC:

{
  "version": 5,
  "configurePresets": [
    {
      "name": "base",
      "hidden": true,
      "generator": "Visual Studio 17 2022",
      "toolset": "v143"
    },
    {
      "name": "arm64ec",
      "inherits": "base",
      "displayName": "ARM64EC",
      "architecture": {
        "value": "ARM64EC",
        "strategy": "external"
      },
      "cacheVariables": {
        "CMAKE_C_COMPILER": "cl.exe",
        "CMAKE_CXX_COMPILER": "cl.exe"
      }
    }
  ]
}

完整的GitHub Actions配置示例

name: build

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

env:
  BUILD_TYPE: Release

jobs:
  buildWindowsARM64EC:
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v3

      - name: Install ARM64EC VC Tools
        uses: microsoft/setup-msbuild@v1
        with:
          vs-version: '17.x'
          components: |
            Microsoft.VisualStudio.Component.VC.Tools.ARM64EC
            Microsoft.VisualStudio.Component.VC.Tools.ARM64
            Microsoft.VisualStudio.Component.Windows11SDK.22621

      - name: Build ARM64EC project
        shell: pwsh
        run: |
          $vcvarsPath = & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" `
            -products * `
            -latest `
            -requires Microsoft.VisualStudio.Component.VC.Tools.ARM64EC `
            -find "VC\Auxiliary\Build\vcvarsall.bat"
          & $vcvarsPath amd64_arm64
          cmake -B ${{github.workspace}}/build --preset arm64ec
          cmake --build ${{github.workspace}}/build --config Release

内容的提问来源于stack exchange,提问作者Alastair Taylor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 16:33:11