CMake и ARM64EC с действиями GitHub
Следуя инструкциям в https://learn.microsoft.com/en-us/windows/arm/arm64ec-build , я могу создать простой проект CMake «привет, мир», используя VS2022.
Проблема в том, что если я попытаюсь использовать действия GitHub, я получу:
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:3 (project):
No CMAKE_C_COMPILER could be found.
CMake Error at CMakeLists.txt:3 (project):
No CMAKE_CXX_COMPILER could be found.
Мой yml очень простой
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: Do stuff
run: |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm64
cmake -B ${{github.workspace}}/build --preset arm64ec
cmake --build ${{github.workspace}}/build --config Release
shell: cmd
CMakePresets.json также прост.
{
"version": 5,
"configurePresets": [
{
"name": "base",
"hidden": true,
"generator": "Visual Studio 17 2022"
},
{
"name": "arm64ec",
"inherits": "base",
"displayName": "arm64ec",
"architecture": {
"value": "arm64ec",
"strategy": "set"
}
}
]
}
CMakeLists.txt:
cmake_minimum_required (VERSION 3.15)
project ("hello")
set(CMAKE_CXX_STANDARD 17)
set(Sources
main.cpp)
add_executable (${PROJECT_NAME} ${Sources})
Я предполагаю, что мне не хватает конфигурации PATH или чего-то подобного, но, несмотря на несколько итераций, я не могу приблизиться к тому, чтобы она работала.
1 ответ
В конце концов решение оказалось раздражающе простым.
По сути, мне нужно было настроить другой SDK.
Я добавил -DCMAKE_SYSTEM_VERSION=10 и все работает нормально.
YML теперь просто:
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: Do stuff
run: |
cmake -B ${{github.workspace}}/build --preset arm64ec -DCMAKE_SYSTEM_VERSION=10
cmake --build ${{github.workspace}}/build --config Release
При этом он работает так, как ожидалось:
shell: C:\Program Files\PowerShell\7\pwsh.EXE -command ". '{0}'"
env:
BUILD_TYPE: Release
-- Selecting Windows SDK version 10.0.22621.0 to target Windows 10.
-- The C compiler identification is MSVC 19.37.32825.0
-- The CXX compiler identification is MSVC 19.37.32825.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.37.32822/bin/Hostx64/arm64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.37.32822/bin/Hostx64/arm64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done (43.2s)
-- Generating done (0.0s)
-- Build files have been written to: D:/a/simpleConsoleToTestGHActions/simpleConsoleToTestGHActions/build
MSBuild version 17.7.2+d6990bcfa for .NET Framework