Building Mac Catalyst apps

I wonder if anyone had any luck with using MOE to build and run a Mac Catalyst app for the same iphone/ipad code?

The Xcode and Apple tutorials say that ipad apps should build out of the box, but I’m getting linkage issues saying that the app’s main pod has an incompatible platform (iphone something).

@kisg @Noisyfox any insights?

I guess the MOE framework would have to be rebuilt to link to the proper platform libraries on MacOS - and ideally built as a universal library to support the new ARM Macs as well.

Thank you Gergely. Could you briefly outline the steps (and any potential changes) that might be required to do that? Or if it was described somewhere already and you could point me to that?

@Noisyfox @kisg is moe-core module in Git basically the MOE framework you referred to?

Does it need to be a separate build for Mac only or it could be the same for Mac and iOS?

Hmmmm I actually don’t know much about the whole Catalyst thing so I can’t answer you right now. I’ll take a look later. As for know I’m pretty sure the moe-core needs to be rebuilt to include Catalyst target in the moe framework, however I don’t know how difficult this could be.

@Noisyfox what are you referring as “Catalyst target”? Is that what called as targets in xcode or there is something else?

I’m trying to wrap my head around this part. The Apple docs all refer that no separate build is needed for Mac Catalyst apps. Though there is a setting in xcode project for the Mac apps next to iphone and ipad ones.

Also, the iphone and ipad have x86/64 binaries/target, as well as arm7/64 (i.e. simulator vs device). I presume the Catalyst ones will need x64 (no simulator) and maybe also arm64 (for new M1).

The target is called “Mac” in Xcode, however I call it Catalyst target to distinguish it from the normal Mac app.

That’s true if all the libraries/frameworks you are using support Mac catalyst, and I’m not sure if MOE framework supports that.

Yes technically all required archs are available in MOE, it shouldn’t be too hard to make the lib targeting real device to include all of them (e.g. to built as a universal library).