[CMake] MacOSX Framework handling

Michael Jackson mike.jackson at bluequartz.net
Sun Jul 22 17:20:32 EDT 2012


I have a project very similar to yours and with a post installation script I was able to create symlinks in the .app bundle that point to the Qt frameworks and my own support libraries in folders outside of the .app package that the command line tools look for. So it can be done. I'll see if I can dig up the relevant bits of code.

take a look at http://dream3d.bluequartz.net/downloads/index.html and download the OX installation. I also thin the Qt binaries to only a single arch to cut down on the size of the download.
___________________________________________________________
Mike Jackson                    Principal Software Engineer
BlueQuartz Software                            Dayton, Ohio
mike.jackson at bluequartz.net              www.bluequartz.net

On Jul 22, 2012, at 2:33 PM, Daniel Franke wrote:

> 
> Hi all.
> 
> I try to set install/package a cmake project on MacOSX. Questions first, 
> please find the details below.
> 
> - does cmake support multiple .dylib in a single framework? (do Frameworks
>   support this at all?)
> - does cmake support Umbrella Frameworks (umbrella Frameworks may contain
>   other Frameworks [1])?
> - how to include header files in Frameworks?
> 
> The information I found via google is from 2010 or older and mostly about work 
> in progress [2]. Pointers or suggestions on Mac packaging would be highly 
> welcome.
> 
> Thanks
> 
> 	Daniel
> 
> 
> [1] 
> https://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/BPFrameworks/Frameworks.html
> [2] http://www.cmake.org/Wiki/CMake:MacOSX_Frameworks
> 
> 
> --
> This is were I come from: in my project, there are two GUI applications (.app 
> bundles) that depend on Qt4, one console application (not a bundle) and a 
> bunch of shared libraries/frameworks between the three. 
> 
> Options I considered so far:
> * embedded dependencies in bundles using BundleUtilities/DeployQt4
>    -> two copies of Qt and project libraries, one each for the GUI bundles,
>       but the console program doesn't have a .app directory to store its
>       dependencies?!
> 
> * prepare an installation folder like:
>     - foo.app/...
>     - bar.app/...
>     - bin/console_prog
>     - Frameworks/...
>    -> doesn't work as the Frameworks require "fixing up", i.e. setting
>       the "@executable_path" to find other frameworks: *.app and bin/*
>       require different paths here
> 
> * install shared libraries to /usr/lib and forget about Frameworks
>    -> not the Mac way, but would probably work
> 
> * install Frameworks to /Library/Frameworks
>    -> the Mac way, should work
> 
> So, although I wanted to keep everything in one directory for simple uninstall 
> (remove the directory), I guess I have to distribute the files across the file 
> system. Now, instead of installing 5+ specific shared libraries or frameworks, 
> I'd like to have one ${project}.framework instead that contains all the 
> .dylibs or all the other frameworks ...
> 
> --
> 
> Powered by www.kitware.com
> 
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
> 
> Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ
> 
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake



More information about the CMake mailing list