Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Problem

CMake provides a built-in flag CMAKE_SYSTEM_PROCESSOR to specify the target platform for the build.

https://cmake.org/cmake/help/latest/variable/CMAKE_SYSTEM_PROCESSOR.html

If CMake is invoked from a non-native Powershell or other terminals then this flag could be set wrongly. CMAKE_SYSTEM_PROCESSOR flag is derived from environment variables PROCESSOR_ARCHITECTURE and PROCESSOR_ARCHITEW6432. And for emulated PowershellCMake, the environment variables could be set to AMD64 or IA32 and CMAKE_SYSTEM_PROCESSOR derives the wrong value.

And if your CMake project uses CMAKE_SYSTEM_PROCESSOR for platform-specific configuration it might fail.

Solution

Powershell provided with the default windows installer is not a native Arm64 binary but a native build can be downloaded from You can use native CMake. There are no official CMake binaries for Windows Arm64 yet but can be generated from the source https://github.com/PowerShell/PowerShell/releases/tag/v7.0.2linaro.atlassian.net/wiki/spaces/WOAR/pages/28684353912/CMake#Build-from-source