On Nov 17, 2010, at 12:20 PM, Clinton Stimpson wrote:
On Wednesday, November 17, 2010 09:46:23 am David Doria wrote:
On Wed, Nov 17, 2010 at 9:32 AM, Michael Jackson
<[email protected]> wrote:
I tool a little different approach in my own projects. I end up
"configuring" a shell script that gets run at install time (OS X
Only).
Inside that shell script are all the copying to the
CMAKE_INSTALL_PREFIX,
ensuring destination directories inside the OS X App bundle are
setup
(Plugins, libs, Frameworks) and then finally calling the
BundleUtilities
to copy all the dependent libraries and plugins into the App
bundle and
"fixing" the install_name embedded in each library so that they
point to
libraries inside the bundle. For Qt projects I also make sure a
blank
qt.conf file and qtmenu.nib file are properly copied into the
bundle.
There are some "dark" issues when it comes to plugins. The basic
BundleUtilities will look for files that end with .dylib (on OS X)
and
copy those to the "lib" directory and frameworks into the Framework
directory. The issue for me was when I had plugins with .dylib file
extensions these would always be copied into the wrong directory.
I had
to make sure I used a set properties to set the file extension of
my own
plugins to .plugin so I had a guaranteed way to tell the difference
between a support library that should go into "lib" and a plugin
that
should get copied into Plugins. One form of this can be found at
<http://scm.bluequartz.net/support-libraries/cmp/blobs/master/OSX_Tools/C
ompleteBundle.cmake.in> There may be some Qt specific lines in the
file
and it is OS X specific. Also note that you can over-ride some of
the
BundleUtilities commands in order to implement variations that
suit your
own needs.
___________________________________________________________
Mike Jackson www.bluequartz.net
David C. -
Is what Mike is doing here a work around or is this how
BundleUtilities is intended to be used?
Looks like a workaround to me. Its had problems before, but if you
use cmake
2.8.3, you'll be better off.
I was having problems with the BundleUtilities.cmake doing what I
needed it to do so I wrote the code I quoted a while ago and have just
used it ever since because it works for _my_ projects. I'll eventually
take a look at how the BundleUtilities works in CMake 2.8.3 and see
what code I can get rid of.
And just for completeness the macro that I pointed is called from
another macro that sets up the OS X plist entry, icon file and some
other stuff, generates all the extra shell scripts and cmake files so
at the top level you have:
IF(APPLE)
SET(GUI_TYPE MACOSX_BUNDLE)
ConfigureMacOSXBundlePlist(IPHelperApp ${EXE_DEBUG_EXTENSION}
${PROJECT_RESOURCES_DIR}/icons/icns/
IPHelperApp.icns
${IPHelper_VERSION} )
ENDIF (APPLE)
cmp_InstallationSupport(IPHelperApp ${EXE_DEBUG_EXTENSION} $
{IPHelperApp_BINARY_DIR} "1")
--
Mike Jackson <www.bluequartz.net>
_______________________________________________
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