

Note: For selling applications in the macOS App Store, special rules apply. For example, to build your application for both x86_64 and arm64:

This allows you to both cross-compile to a different architecture, and to build universal (multi-architecture) binaries. To build for other architectures you can use the QMAKE_APPLE_DEVICE_ARCHS variables in your project files or on the command line. Architecturesīy default, Qt will build for the architecture of your development machine - either x86_64, or arm64 if you are on an Apple Silicon Mac. This is a last-resort solution, and should only be applied if your application has no other ways of working around the problem. This technique allows Apple to ensure that binaries built long before the new SDK and operating system was released will still continue to run without regressions on new macOS releases.Ī consequence of this is that if Qt has problems dealing with some of these macOS features (dark-mode, layer-backed views), the only way to opt out of them is building with an earlier SDK (the 10.13 SDK, available through Xcode 9). One caveat to using the latest Xcode version and SDK to build your application is that macOS's system frameworks will sometimes decide whether or not to enable behavior changes based on the SDK you built your application with.įor example, when dark-mode was introduced in macOS 10.14 Mojave, macOS would only treat applications built against the 10.14 SDK as supporting dark-mode, and would leave applications built against earlier SDKs with the default light mode look. Doing so will likely lead to crashes at runtime if the binary is then deployed to a macOS version lower than what Qt expected to run on.īy always building against the latest available platform SDK, you ensure that Qt can take advantage of new features introduced in recent versions of macOS.įor more information about SDK-based development on macOS, see Apple's developer documentation. Note: You should not lower the deployment target beyond the default value set by Qt. You should not need to change this default, but if needed you can increase it in your project file: Qt expresses the deployment target via the QMAKE_MACOSX_DEPLOYMENT_TARGET qmake variable, which has a default value set via the makespec for macOS. If the binary is launched on a macOS version below the deployment target macOS or Qt will give an error message and the application will not run. In theory this would allow running your application on every single macOS version released, but for practical (and technical) reasons there is a lower limit to this range, known as the deployment target of your application. When the binary is run on a macOS version lower than the SDK it was built with, Qt will check at runtime whether or not a platform feature is available before utilizing it.


14.sdk Target Platformsīuilding for macOS utilizes a technique called weak linking that allows you to build your application against the headers and libraries of the latest platform SDK, while still allowing your application to be deployed to macOS versions lower than the SDK version. app /Contents /Developer /Platforms /MacOSX.
