Xojo and cross compiling for macOS

Way back when, when Apple still permitted 32 bit compiles, the landscape for what you had to do to build an app that would work on macOS was a lot simpler.

Now, not only do you have to build the right kind of executable you need to also do code signing, even if only ad-hoc signing, to run even a debug app on the very latest versions of macOS.

First off you cant use the native file systems of Windows or Linux to create a bundle. Those file system dont support what macOS needs to create a proper bundle. So you have to build into a zip file or some other container type that DOES.

As well, since you need to sign the build, you either sign it when you compile OR you try & somehow sign when you finally have the app ON a Mac or suitable VM. At best Xojo might make a remote debug run from Windows or Linux to macOS compile & link on Windows or Linux and then send the code to the remote stub. Then the remote stub might unpack this and apply an ad-hoc signature & start the application. You would still needs a Mac, or suitable VM, to sign code to be able to remote debug the app.

But this still leaves developers on Windows & linux unable to build & sign, or notarize, a Mac app that they could send to anyone else. I dont expect that signing a macOS build on Windows or Linux time will be possible since this would require Apples security framework be ported to another OS. I doubt this will ever occur. Trying to duplicate what Apple has implemented in their framework AND keeping up to date with it, without Apples source code, seems very difficult if not downright impossible.

And, to sign and submit an app to the App store or to notarize one you still need a Mac and do those tasks there.

It seems that if you want to develop FOR a Mac you are going to have to do that ON a Mac for the foreseeable future – if not forever.

Now, I want to be clear. This is NOT Xojo’s fault. And I dont expect they will be able to “fix” it. Apple has changed the rules a lot and made things more difficult. And, the side effects are what they are. Don’t blame Xojo for this one.