[CMake] fixup_bundle, shared libs and Plugins
Michael Jackson
mike.jackson at bluequartz.net
Mon Jan 10 18:12:21 EST 2011
CMake 2.8.3, OS X 10.6.6, Makefiles
I am attempting to use fixup_bundle() to create my OS X app bundle. The issue I am running into is that under a certain case some common libraries that get built by the project are not being resolved correctly. Here goes the explanation:
I have a project "IPHelper.app". Part of the project is building 2 shared libraries, MXADataModel and AIMLib. I also use some of the Qt Imageformat plugins and I build my own Qt Plugins for the application.
So, I use fixup_bundle (from a .cmake file that gets configured). I have a list of the plugins (both mine and Qt's image formats) that gets passed in. I also have a list of directories to search for libraries.
Here is the snippet of CMake code:
fixup_bundle("${CMAKE_INSTALL_PREFIX}/IPHelperApp.app"
# Plugins to Install
"${PLUGIN_LIST}"
# Directories to Search for Libraries
"/Users/mjackson/Workspace/IPHelper/Build/Bin;/Users/Shared/Toolkits/Qt-4.6.2-Cocoa/bin;/Users/Shared/Toolkits/Qt-4.6.2-Cocoa/lib;/Users/Shared/Toolkits/Qt-4.6.2-Cocoa/plugins/imageformats")
If I run "make install" I will get all the plugins but NONE of the libraries (MXADataModel and AIMLib) copied or fixed up.
If I run "make install" where the ${PLUGIN_LIST} variable is actually blank then I get the libraries (MXADataModel and AIMLib) to resolve, copy and get fixed up, but obviously none of the plugins. I am not sure if I am doing something wrong, there is a bug in BundleUtilities or what.
Some output from the first run where I have a plugin list with some status output enabled from BundleUtilities.cmake:
-- 7/20: copying '@executable_path/../lib/libAIMLib.dylib'
-- key='libAIMLib_dylib'
-- item='@executable_path/../lib/libAIMLib.dylib'
-- resolved_item='@executable_path/../lib/libAIMLib.dylib'
-- default_embedded_path='@executable_path/../lib'
-- embedded_item='@executable_path/../lib/libAIMLib.dylib'
-- resolved_embedded_item='/Users/Shared/Toolkits/IPHelper/IPHelperApp.app/Contents/lib/libAIMLib.dylib'
-- copyflag='1'
--
Error copying file "@executable_path/../lib/libAIMLib.dylib" to "/Users/Shared/Toolkits/IPHelper/IPHelperApp.app/Contents/lib/libAIMLib.dylib".
and here is output from the second run:
-- 4/10: copying '/Users/mjackson/Workspace/IPHelper/Build/Bin/libAIMLib.dylib'
-- key='libAIMLib_dylib'
-- item='libAIMLib.dylib'
-- resolved_item='/Users/mjackson/Workspace/IPHelper/Build/Bin/libAIMLib.dylib'
-- default_embedded_path='@executable_path/../lib'
-- embedded_item='@executable_path/../lib/libAIMLib.dylib'
-- resolved_embedded_item='/Users/Shared/Toolkits/IPHelper/IPHelperApp.app/Contents/lib/libAIMLib.dylib'
-- copyflag='1'
I have no idea what is going on and would appreciate any enlightening thoughts. Maybe I am just not using fixup_bundle correctly.
The source is located at http://scm.bluequartz.net/eim/iphelper on the "user_init" branch.
Thanks
___________________________________________________________
Mike Jackson www.bluequartz.net
Principal Software Engineer mike.jackson at bluequartz.net
BlueQuartz Software Dayton, Ohio
More information about the CMake
mailing list