[CMake] CPack Generator for the Mac App Store

Clinton Stimpson clinton at elemtech.com
Thu Apr 11 19:01:02 EDT 2013


On Thursday, April 11, 2013 03:30:39 PM Brian Milco wrote:
> Hi,
> 
> I've added a CPack package generator for the Mac App Store for your
> consideration. You can find it on github:
> https://github.com/iPenguin/cmake/tree/cpack-mac-app-store-generator
> 
> This is a first draft, but it should work to get a basic application
> uploaded via Apple's "Application Loader". I have no idea if this will work
> for the iOS App Store. Suggestions and comments are appreciated.
> 
> This patch also includes code signing which is required by the Mac App
> Store, but it should also correctly sign your Bundle or DragNDrop packages
> to get your application working with OS X 10.8's default Gatekeeper
> settings if you supply a developer certificate.
> 
> If you're building your app for distribution via the Mac App Store, and
> your website or other channels you might want to add something like the
> following to your CMakeLists.txt:
> 
>     if(${APP_STORE})
>         set(CPACK_GENERATOR "MacAppStore")
> 
>         #The names of the App Store certs you got from Apple iTunesConnect
>         set(CPACK_APPLE_CERT_APP "3rd Party Mac Developer Application:
> [YOUR NAME]")
>         set(CPACK_APPLE_CERT_INSTALLER "3rd Party Mac Developer Installer:
> [YOUR NAME]")
> 
>         #The plist file containing your sandboxing entitlements[1]
>         set(CPACK_APPLE_ENTITLEMENTS
> "${CMAKE_SOURCE_DIR}/resources/Entitlements.plist")
> 
>     else()
>         set(CPACK_GENERATOR "Bundle")
> 
>         #The names of the Developer certs you got from Apple iTunesConnect
>         set(CPACK_APPLE_CERT_APP "Developer ID Application: [YOUR NAME]")
>         set(CPACK_APPLE_CERT_INSTALLER "Developer ID Installer: [YOUR
> NAME]")
>     endif()
> 
>     #A list of additional files that need to be code signed, ie Frameworks,
> plugins, any additional binaries, etc.
>     set(CPACK_APPLE_CODESIGN_FILES
> "/Contents/Frameworks/QtCore.framework/Versions/4/QtCore"
> 
> "/Contents/Frameworks/QtGui.framework/Versions/4/QtGui")
> 
>     #how do I reference MACOSX_BUNDLE_GUI_IDENTIFIER directly in the
> generator code?
>     set(CPACK_APPLE_BUNDLE_ID "${MACOSX_BUNDLE_GUI_IDENTIFIER}")
> 
> -Brian
> 
> [1]
> http://developer.apple.com/library/mac/#documentation/Miscellaneous/Referenc
> e/EntitlementKeyReference/Chapters/EnablingAppSandbox.html#//apple_ref/doc/u
> id/TP40011195-CH4-SW1

Why do you have this CPack generator creating the .app instead of letting the 
CMake build step create the .app from the add_executable( ... MACOSX_BUNDLE .. 
)?

-- 
Clinton Stimpson
Elemental Technologies, Inc
Computational Simulation Software, LLC
www.csimsoft.com


More information about the CMake mailing list