Some small progress after using INSTALL(CODE ...) but still an error.
(Small) code is still there https://github.com/galleon/CMakeOSX for
those interested.

Any idea what is going wrong ?

Best Regards
Guillaume

....

-- 4/8: copying '/Users/alleon/PROJECTS/CMakeOSX_build/foo/libfoo.1.dylib'
-- fixup_bundle: fixing...
-- 5/8: fixing up '/Users/alleon/PROJECTS/CMakeOSX_build/plugin/libplugin.so'
  exe_dotapp_dir/='/tmp/example/main.app/'
  item_substring='/Users/alleon/PROJECTS'
  
resolved_embedded_item='/Users/alleon/PROJECTS/CMakeOSX_build/plugin/libplugin.so'

Install or copy the item into the bundle before calling fixup_bundle

CMake Error at /Applications/CMake
2.8-4.app/Contents/share/cmake-2.8/Modules/BundleUtilities.cmake:557
(message):
  cannot fixup an item that is not in the bundle...
Call Stack (most recent call first):
  /Applications/CMake
2.8-4.app/Contents/share/cmake-2.8/Modules/BundleUtilities.cmake:645
(fixup_bundle_item)
  example/cmake_install.cmake:44 (fixup_bundle)
  cmake_install.cmake:35 (INCLUDE)


make: *** [install] Error 1



On Wed, Apr 20, 2011 at 12:03 PM, tog <guillaume.all...@gmail.com> wrote:
> Hi,
>
> Yes I have used the references you send me i.e. the link to the QtTest 
> project.
> This project is nevertheless simpler than mine since only an
> executable is generated - no libraries (excepted those taken from Qt).
>
> If my understanding is correct - FIXUP_BUNDLE shall be used after the
> bundle is created. Shall it be called for each artifacts i.e each
> library and executable or only for the main executable.
>
> My problem is that I got an  "fixup_bundle: not a valid bundle" error
> message when using FIXUP_BUNDLE.
>
> I have created a very simplified project here if one wants to have a
> look to my problem: https://github.com/galleon/CMakeOSX
>
> Best Regards
> Guillaume
>
>
>
> On Tue, Apr 19, 2011 at 9:10 PM, Michael Jackson
> <mike.jack...@bluequartz.net> wrote:
>> Use the "SHARED" library type for your shared library and "MODULE" for your 
>> plugin.
>>
>> Have you downloaded the Qt example from the Wiki? It shows what you need to 
>> do. The terse summary of how some of us do it is this:
>>
>> Write a configurable *.cmake.in file that gets configured at cmake time. An 
>> install rule is also added that executes the .cmake file at install time. 
>> inside this file is cmake code to over ride some CMake functions for your 
>> use and then include the BundleUtilities. And then call "fixup_bundle". The 
>> tail end of my own file looks like this:
>>
>> # -- Run the BundleUtilities cmake code
>> include(BundleUtilities)
>> fixup_bundle("${CMAKE_INSTALL_PREFIX}/IPHelperApp_debug.app"
>>             # Plugins to Install
>>             
>> "${CMAKE_INSTALL_PREFIX}/IPHelperApp_debug.app/Contents/plugins/imageformats/libqgif.dylib;${CMAKE_INSTALL_PREFIX}/IPHelperApp_debug.app/Contents/plugins/imageformats/libqjpeg.dylib;${CMAKE_INSTALL_PREFIX}/IPHelperApp_debug.app/Contents/plugins/imageformats/libqtiff.dylib;${CMAKE_INSTALL_PREFIX}/IPHelperApp_debug.app/Contents/plugins/libEMMPMPlugin_debug.plugin;${CMAKE_INSTALL_PREFIX}/IPHelperApp_debug.app/Contents/plugins/libCrossCorrelationPlugin_debug.plugin"
>>             # Directories to Search for Libraries
>>             
>> "/Users/mjackson/Workspace/IPHelper/Build/Bin;/Users/mjackson/Workspace/IPHelper/Build/Bin"
>> )
>>
>> This is for a Qt based project where I need some of the Qt plugins for image 
>> loading and I have produced my own plugins that need to get copied into the 
>> application bundle. Note that this will get called at INSTALL time NOT at 
>> build time. You should have code in your main executable that looks for the 
>> plugins in a few locations so your executable will work from both the build 
>> directory and the installed location. Again, if you happen to be working 
>> with Qt I can share some code that I use.
>>
>> If you take a look at 
>> http://scm.bluequartz.net/support-libraries/cmp/trees/master there are some  
>> Macros (cmpCMakeMacros.cmake) that I use in my project. There is also the 
>> example configured file in the OSX_Tools directory (CompleteBundle.cmake.in).
>>
>> The "cmp" project is just a collection of CMake code that I use over and 
>> over in all my projects so I just made a Git module out of it and I use it 
>> as a git submodule in all my projects.
>> ___________________________________________________________
>> Mike Jackson                      www.bluequartz.net
>> Principal Software Engineer       mike.jack...@bluequartz.net
>> BlueQuartz Software               Dayton, Ohio
>>
>> On Apr 19, 2011, at 11:21 AM, tog wrote:
>>
>>> Hi Mike
>>>
>>> Thanks for this very helpful answer.
>>> I am nevertheless still facing few problems. My project contains:
>>>  - a shared library
>>>  - an executable using the shared lib
>>>  - a plugin lib (loaded using dylib)
>>>
>>> I have modified my exec target to be
>>> ADD_EXECUTABLE(main MACOSX_BUNDLE  main.cpp sub.cpp)
>>> then I have something like
>>> INSTALL(TARGETS main  BUNDLE    DESTINATION Applications  RUNTIME)
>>>
>>> the make install does create Application.app and add the main exec.
>>>
>>> Fir the lib I am facing 2 problems:
>>>  1- I don't understand how to add them to the bundle. They are both
>>> created using:
>>>
>>>      ADD_LIBRARY(foo ${EXAMPLE_LIBRARY_TYPE} foo.cpp)
>>> EXAMPLE_LIBRARY_TYPE=SHARED
>>>
>>>      INSTALL(TARGETS foo
>>>              RUNTIME DESTINATION ${EXAMPLE_INSTALL_LIB_DIR} COMPONENT
>>> RuntimeLibraries
>>>              LIBRARY DESTINATION ${EXAMPLE_INSTALL_LIB_DIR} COMPONENT
>>> RuntimeLibraries
>>>              ARCHIVE DESTINATION ${EXAMPLE_INSTALL_LIB_DIR} COMPONENT
>>> Development
>>>
>>>      nothing is added to the app.
>>>
>>>  2- According to the doc. For a library loaded at runtime the doc
>>> suggests to use MODULE but I end up having this error. Is that
>>> supported on Mac
>>>
>>> Linking CXX shared module libplugin.so
>>> cd /Users/alleon/PROJECTS/example_build/plugin && "/Applications/CMake
>>> 2.8-4.app/Contents/bin/cmake" -E cmake_link_script
>>> CMakeFiles/plugin.dir/link.txt --verbose=1
>>> /usr/bin/c++   -bundle -Wl,-headerpad_max_install_names
>>> -compatibility_version 1.0.0 -current_version 1.2.3 -o
>>> libplugin.1.2.3.so CMakeFiles/plugin.dir/plugin.cpp.o
>>> i686-apple-darwin10-g++-4.2.1: -compatibility_version only allowed
>>> with -dynamiclib
>>> make[2]: *** [plugin/libplugin.1.2.3.so] Error 1
>>>
>>>
>>> Thanks
>>> Guillaume
>>>
>>>
>>> On Sat, Apr 16, 2011 at 6:51 PM, Michael Jackson
>>> <mike.jack...@bluequartz.net> wrote:
>>>> You need to process your executable with "install_name_tool" either 
>>>> manually or using the "BundleUtilities" functionality built into CMake. 
>>>> Note that there is a bug in the current CMake 2.8.4 that will NOT allow 
>>>> bundleUtilities to work on a command line type app. Your app MUST be in a 
>>>> .app bundle. If you search for BUndleUtilities on the Wiki there is a 
>>>> small Qt based project that shows a simple use of BundleUtilities.
>>>>
>>>> Hope that helps.
>>>> ___________________________________________________________
>>>> Mike Jackson                      www.bluequartz.net
>>>> Principal Software Engineer       mike.jack...@bluequartz.net
>>>> BlueQuartz Software               Dayton, Ohio
>>>>
>>>>
>>>>
>>>> On Apr 15, 2011, at 7:17 AM, tog wrote:
>>>>
>>>>> Dear all
>>>>>
>>>>> I have a project in which I would like to use rpath on Mac OS.
>>>>> Everything is going fine if I am building everything manually (i.e.
>>>>> without CMake)
>>>>>
>>>>> With CMake all is fine for the libs between the build and the
>>>>> installation, all libs are processed with install_name_tool.
>>>>> But nothing is done for the executable (checked from cmake_install.cmake)
>>>>>
>>>>> In the build phase, I don't see any -Wl,-rpath,... added on the command 
>>>>> line.
>>>>>
>>>>> What do I miss there ?
>>>>>
>>>>> I have been using:
>>>>>
>>>>> SET(CMAKE_SKIP_BUILD_RPATH FALSE)
>>>>> SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
>>>>> SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
>>>>> SET(CMAKE_INSTALL_RPATH "${EXAMPLE_INSTALL_LIB_DIR}")
>>>>>
>>>>> as indicated in the Wiki.
>>>>>
>>>>> Is there  tool on the Mac to get rpath from the executable ?
>>>>>
>>>>>
>>>>> Thanks for your help
>>>>> Guillaume
>>>>>
>>>>> --
>>>>> PGP KeyID: 2048R/EA31CFC9  subkeys.pgp.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
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> PGP KeyID: 2048R/EA31CFC9  subkeys.pgp.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
>>
>
>
>
> --
> PGP KeyID: 2048R/EA31CFC9  subkeys.pgp.net
>



-- 
PGP KeyID: 2048R/EA31CFC9  subkeys.pgp.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

Reply via email to