[Qgis-developer] CMake cleanup and OS X frameworks

William Kyngesburye woklist at kyngchaos.com
Mon Jul 4 12:55:11 EDT 2011


I did some CMake cleanup, along with changing the qgis libraries to frameworks for OS X.  Some notes:

- removed a lot of unnecessary conditionals for target configuration for platform-specific options.  Cmake is designed so that platform-specific options are only used for the platform, so they can all be specified in a single configuration command. ie for an application:

  ADD_EXECUTABLE ([exename] MACOSX_BUNDLE WIN32 [sources...])

- header installation is an automatic part of targets.  Though some headers may still need a separate install command (ui headers don't exist when cmake runs).  I also put all global header installation (qgsconfig.h, qgisplugin.h, qgsrendererplugin.h) in qgis_core, since in the OS X framework setup there is no place for random headers.

- core, gui, analysis, grass and sqlanywhere libs are now frameworks on OS X.  I couldn't make qgispython a framework because it's loaded dynamically and the Qt dyld functions expect standard file extensions, and a framework has none (the binary inside the framework, that is).  Really, grass and sqlanywhere don't need to be frameworks, maybe I got carried away there ;)

There is also an option to install core, gui and analysis as "developer" frameworks.  This gets around the potential problem of the internal relative path linking, and makes the libraries more accessible.  The cmake option is QGIS_MACAPP_INSTALL_DEV (bool).  They are installed by default in /Library/Frameworks, but this can be changed with QGIS_MACAPP_DEV_PREFIX.

Note that the headers are not updated to make "proper" frameworks, so -I flags to each framework's Headers folder are still needed.  (A proper framework header references other framework headers prefixed by the framework name, ie #include <qgis_core/qgis.h>.  Needs some discussion about reorganizing the headers in QGIS, if there is interest.)

-----
William Kyngesburye <kyngchaos*at*kyngchaos*dot*com>
http://www.kyngchaos.com/

"The beast is actively interested only in now, and, as it is always now and always shall be, there is an eternity of time for the accomplishment of objects."

- the wisdom of Tarzan







More information about the Qgis-developer mailing list