Requirements:
- Xcode 9 or above (for the compiler and build tools)
- A version of Qt 5 or 6. Homebrew, vcpkg, macports, or whatever you prefer. For
example, in HomeBrew…
brew install qt
Note that Qt6 imposes greater Xcode and macOS requirements. Qt6 uses std::filesystem
, which
is only implemented with a 10.15 or later minimum macOS deployment target.
Building Quackle:
Follow the cmake instructions in README.md. You can use the Xcode generator
to make an Xcode project if you wish.
Creating the DMG:
- Set up Xcode with your Mac Developer account, and make sure you
have a Developer ID Application signing certificate installed into
your Keychain.
- In the Xcode settings, set the deployment target to 10.9 (earlier versions
don’t appear to work with C++11).
- Create an Archive build using XCode.
- From the Archive interface, click Validate… and validate for a Developer
ID-signed Application. If you have a signing profile, this validation
should work.
- Click Export… and export as a Mac Application.
- You now have an unsigned application which is missing Qt frameworks, but
will work locally.
- From the Qt4 distribution, run ‘macdeployqt Quackle.app’.
- But, it turns out that the Frameworks installed by macdeployqt are partly
broken and can’t be code-signed. So, remove the Frameworks directory, clone
https://github.com/jfultz/MacQt4Frameworks.git
and cp -R the entire Frameworks directory into Quackle.app/Contents.
- Run ‘codesign -s --force --deep Quackle.app’ where
is the SHA1 of your certificate (if you open it in Keychain and scroll all
the way to the bottom, you’l see it…but you’ll have to strip the spaces).
- Verify code-signing with
spctl --assess --type execute --verbose Quackle.app
- Package it up in a .dmg. I used the very nice package create-dmg off of
Github with the following command-line:
create-dmg --app-drop-link 400 100 --icon Quackle.app 100 100
–window-size 500 250 --background DmgBackground.png Quackle.dmg Quackle.app