Qt for Windows on ARM - today, it is more interesting than ever!
May 21, 2024 by Vladimir Minenko | Comments
Qt is the leading framework for building cross-platform and multi-platform applications on desktops and embedded devices. Countless ARM-based devices use Qt to provide modern UX today. With the rise of ARM architecture in desktop computing, developers using Qt benefit from Qt's long track record in both domains: desktop and embedded.
Yesterday, on May 20th, Microsoft launched Copilot+ PCs with the new Surface Laptop and Surface Pro ARM-based PCs as well as with multiple other new products annoucned by almost all major manufacturers. This is exciting news for Qt developers and for Qt in general.
As you know, Qt supports Windows and has been used on this platform since the early 90s. It has a long, interesting history and an uncountable number of Qt applications running today, in 2024, on millions of Windows PCs.
Qt 6 has been supporting Windows on ARM as a Technology Preview since Qt 6.2, reflecting Qt's early commitment to this emerging, and since today, an new, exciting platform. This implementation in Qt 6.2 allows cross-compilation on an x86_64 development machine and remote deployment to a Windows on ARM target. See this blog post for more details.
Targeting the upcoming Qt 6.8, we are extending this Technology Preview implementation to run directly on Windows on ARM desktops and so to make remote deployment only optional. This would basically reflect the well-known desktop application development workflow used by most developers. Beyond the use of Windows DevKit in the past, we verified implementation on the real Copilot+ PC Qualcomm hardware in a cloud service. The good news was a kind of expected: Qt ran well there! Thanks to Linaro and Qualcomm for making this possible!
At the time of writing this, Qt does not support the new ARM64EC (“Emulation Compatible”) application binary interface (ABI) yet. This is a known gap, and we are currently working to close it. Depending the on the progress, we are considering to support the ARM64EC ABI in our final releases. The native ARM64 ABI is supported as already mentioned since a longer time in Qt for Windows on ARM.
We aim to complete these works for a full release in Qt 6.8.x as early as possible. After a few issues are resolved, we will make preview packages available in the Qt Installer in the next weeks for 6.7.x as well. Stay tuned!
With Qt 6.8, Windows on ARM will become one of the standard desktop platforms supported in Qt.
I'm looking forward to see what is coming up on the Microsoft Build 2024 event which starts today! Some of our colleagues will attend the event.
Let us know about your plans and needs in the support of Windows on ARM in Qt now and in the future.
Blog Topics:
Comments
Subscribe to our newsletter
Subscribe Newsletter
Try Qt 6.8 Now!
Download the latest release here: www.qt.io/download.
Qt 6.8 release focuses on technology trends like spatial computing & XR, complex data visualization in 2D & 3D, and ARM-based development for desktop.
We're Hiring
Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.
Good to see this. I am a mainly mac user and I would love to work with Qt on a simple windows VM, even if I need to build it myself. Incidentally I tried this a few days back and it seems webengine is just trying to hard to build for x86. Will this be fixed in 6.8?
Hi Thierry,
indeed the hardware requirements to build and especially link Qt WebEngine on your own are pretty tough to reach, especially inside a VM. Do you need Qt WebEngine for your project? If not, I'd recommend to leave it out for the build process. However, if you do, then using binary packages might be another option, as we barely can do anything about those hardware limitations coming from the Chromium side.
Are there any binary packages of Qt WebEngine for Windows ARM64? I installed Qt 6.7.0 for both x64 and arm64 but only found WebEngine files for x64.
I could probably work with binary.. But I need webengine, so if 6.8 provides arm binaries that could be a good thing for me.
I tried to use Qt 6.7 from windows vm running on M2 machine. My host and target both are arm64. But Building from Qt try to cross compile using X64 host tools from the path.C:\PROGRA~1\MICROS~1\2022\COMMUN~1\VC\Tools\MSVC\1440~1.338\bin\HostX64\ARM64\cl.exeBut when I try to build Arm64 app from visual studio 2022, it chose tools from arm64 host.C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.40.33807\bin\HostArm64\arm64\CL.exeAlthough running from X64 tools works find but it will have some overhead in compiling.
I tried different init file C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsarm64.bat this also did not work
This is a great step forward for people running Win11 ARM on Mac OS under various VM options. Please keep us posted on when we can get the relevant installation packages and a nice blog post on how to set it up with the correct MSVC Build tools and compatibility notes - e.g. works with 2022 or not.
Everything works just fine with Visual Studio 2022, and since Qt 6.6. But you need to compile it yourself, which isn't a problem since Visual Studio 2022 has native Arm64 binaries. You also need to have native ninja and cmake for best performance.
And at https://github.com/cristianadam/qt-creator/releases/tag/v13.0.2 I have a Qt Creator 13.0.2 (manual) Windows Arm64 release.
Do you have a plan to support qtwebengine for windows on arm natively?