[CMake] Problem with QtTest Bundle Utility Example?

Bradley Lowekamp blowekamp at mail.nih.gov
Fri Mar 12 16:01:29 EST 2010


Thanks for the prompt answer. This looks like a quick fix.

The other problem I narrowed down (the actual reason the QTest.app failed to launch) is that the Cocoa build requires Resources that are not copied. So it's exiting with the following error:

Qt internal error: qt_menu.nib could not be loaded. The .nib file should be placed in QtGui.framework/Versions/Current/Resources/  or in the resources directory of your application bundle.
Abort trap

Which makes me really wonder if this bundle utility is ready for prime time?

Brad

On Mar 12, 2010, at 3:43 PM, Michael Jackson wrote:

> I had to over-load the gp_item_default_embedded_path_override CMake  
> function with the following:
> 
> # gp_item_default_embedded_path item default_embedded_path_var
> #
> # Return the path that others should refer to the item by when the item
> # is embedded inside a bundle.
> #
> # Override on a per-project basis by providing a project-specific
> # gp_item_default_embedded_path_override function.
> #
> function(gp_item_default_embedded_path_override item  
> default_embedded_path_var)
>   #
>   # The assumption here is that all executables in the bundle will be
>   # in same-level-directories inside the bundle. The parent directory
>   # of an executable inside the bundle should be MacOS or a sibling of
>   # MacOS and all embedded paths returned from here will begin with
>   # "@executable_path/../" and will work from all executables in all
>   # such same-level-directories inside the bundle.
>   #
> 
>   # By default, embed things right next to the main bundle executable:
>   #
>   set(path "@executable_path/../../Contents/MacOS")
> 
>   set(overridden 0)
>   # For Qt Based Plugins for the image formats, the plugins MUST  
> reside in
>   # the "PlugIns/imageformats" directory. Since THIS particular  
> project ONLY has
>   # the Qt Frameworks AND the plugins the below regex will suffice to  
> separate
>   # them from each other. On other projects we could use better logic  
> to
>   # put things where they go. Maybe using some "configured" CMake  
> List of libraries
>   # then looking through each list for the currect library being  
> fixed up.
>   # Embed .dylibs right next to the main bundle executable:
>   #
>   if(item MATCHES "\\.dylib$")
>     set(path "@executable_path/../PlugIns/imageformats")
>     set(overridden 1)
>   endif(item MATCHES "\\.dylib$")
> 
>   # Embed .so right next to the main bundle executable:
>   #
>   if(item MATCHES "\\.so$")
>     set(path "@executable_path/../Plugins/imageformats")
>     set(overridden 1)
>   endif(item MATCHES "\\.so$")
> 
>   # Embed frameworks in the embedded "Frameworks" directory (sibling  
> of MacOS):
>   #
>   if(NOT overridden)
>     if(item MATCHES "[^/]+\\.framework/")
>       set(path "@executable_path/../Frameworks")
>       set(overridden 1)
>     endif(item MATCHES "[^/]+\\.framework/")
>   endif(NOT overridden)
> 
>   set(${default_embedded_path_var} "${path}" PARENT_SCOPE)
> endfunction(gp_item_default_embedded_path_override)
> 
> Which is a complete hack (as it does not take into account other types  
> of plugins) but worked for my limited Application bundle.
> ___________________________________________________________
> Mike Jackson                      www.bluequartz.net
> Principal Software Engineer       mike.jackson at bluequartz.net
> BlueQuartz Software               Dayton, Ohio
> 
> 
> On Mar 12, 2010, at 3:20 PM, Bradley Lowekamp wrote:
> 
>> Hello,
>> 
>> I am trying run the QtTest-Package-Example from: http://www.vtk.org/Wiki/BundleUtilitiesExample 
>> and I am getting some errors on install.
>> 
>> I am running CMake 2.8, with Qt 4.6.2 Cocoa universal, on OSX 10.6.2.
>> 
>> During the fixup_bundle phase I am getting some error message and  
>> some undesired behavior. It appears the qt plugin libraries are  
>> problematic. Here is snipits of the output:
>> 
>> - Install configuration: ""
>> -- Installing: ~/Downloads/QtTest/./install/./QtTest.app
>> -- Installing: ~/Downloads/QtTest/./install/./QtTest.app/Contents
>> -- Installing: ~/Downloads/QtTest/./install/./QtTest.app/Contents/ 
>> Info.plist
>> -- Installing: ~/Downloads/QtTest/./install/./QtTest.app/Contents/ 
>> MacOS
>> -- Installing: ~/Downloads/QtTest/./install/./QtTest.app/Contents/ 
>> MacOS/QtTest
>> -- Installing: ~/Downloads/QtTest/./install/./QtTest.app/Contents/ 
>> Resources
>> -- Installing: ~/Downloads/QtTest/./install/./QtTest.app/Contents/ 
>> Resources/QtTest.icns
>> -- Installing: ~/Downloads/QtTest/./install/QtTest.app/Contents/ 
>> MacOS/plugins/imageformats
>> -- Installing: ~/Downloads/QtTest/./install/QtTest.app/Contents/ 
>> MacOS/plugins/imageformats/libqgif.dylib
>> -- Installing: ~/Downloads/QtTest/./install/QtTest.app/Contents/ 
>> MacOS/plugins/imageformats/libqico.dylib
>> -- Installing: ~/Downloads/QtTest/./install/QtTest.app/Contents/ 
>> MacOS/plugins/imageformats/libqjpeg.dylib
>> -- Installing: ~/Downloads/QtTest/./install/QtTest.app/Contents/ 
>> MacOS/plugins/imageformats/libqmng.dylib
>> -- Installing: ~/Downloads/QtTest/./install/QtTest.app/Contents/ 
>> MacOS/plugins/imageformats/libqsvg.dylib
>> -- Installing: ~/Downloads/QtTest/./install/QtTest.app/Contents/ 
>> MacOS/plugins/imageformats/libqtiff.dylib
>> -- fixup_bundle
>> --   app='./install/QtTest.app'
>> --   libs='~/Downloads/QtTest/./install/QtTest.app/Contents/MacOS/ 
>> plugins/imageformats/libqgif.dylib;~/Downloads/QtTest/./install/ 
>> QtTest.app/Contents/MacOS/plugins/imageformats/libqico.dylib;~/ 
>> Downloads/QtTest/./install/QtTest.app/Contents/MacOS/plugins/ 
>> imageformats/libqjpeg.dylib;~/Downloads/QtTest/./install/QtTest.app/ 
>> Contents/MacOS/plugins/imageformats/libqmng.dylib;~/Downloads/ 
>> QtTest/./install/QtTest.app/Contents/MacOS/plugins/imageformats/ 
>> libqsvg.dylib;~/Downloads/QtTest/./install/QtTest.app/Contents/MacOS/ 
>> plugins/imageformats/libqtiff.dylib'
>> --   dirs=''
>> -- fixup_bundle: preparing...
>> -- 
>> warning: cannot resolve item 'libqgif.dylib'
>> 
>>  possible problems:
>>    need more directories?
>>    need to use InstallRequiredSystemLibraries?
>>    run in install tree instead of build tree?
>> 
>> -- warning: gp_resolved_file_type non-absolute file 'libqgif.dylib'  
>> returning type 'other' -- possibly incorrect
>> -- 
>> warning: cannot resolve item 'libqgif.dylib'
>> 
>>  possible problems:
>>    need more directories?
>>    need to use InstallRequiredSystemLibraries?
>>    run in install tree instead of build tree?
>> 
>> warning: target 'libqgif.dylib' is not absolute...
>> warning: target 'libqgif.dylib' does not exist...
>> /usr/bin/otool: can't open file: libqgif.dylib (No such file or  
>> directory)
>> -- 
>> 
>> (repeated for each other plugin)
>> 
>> Then it copies things again:
>> 
>> - fixup_bundle: copying...
>> -- 1/22: copying '~/Downloads/QtTest/./install/QtTest.app/Contents/ 
>> MacOS/plugins/imageformats/libqgif.dylib'
>> -- 2/22: copying '/Library/Frameworks/QtCore.framework/Versions/4/ 
>> QtCore'
>> -- 3/22: copying '/Library/Frameworks/QtGui.framework/Versions/4/ 
>> QtGui'
>> -- 4/22: copying '~/Downloads/QtTest/./install/QtTest.app/Contents/ 
>> MacOS/plugins/imageformats/libqico.dylib'
>> -- 5/22: copying '~/Downloads/QtTest/./install/QtTest.app/Contents/ 
>> MacOS/plugins/imageformats/libqjpeg.dylib'
>> -- 6/22: copying '~/Downloads/QtTest/./install/QtTest.app/Contents/ 
>> MacOS/plugins/imageformats/libqmng.dylib'
>> -- 7/22: copying '~/Downloads/QtTest/./install/QtTest.app/Contents/ 
>> MacOS/plugins/imageformats/libqsvg.dylib'
>> -- 8/22: copying '/Library/Frameworks/QtSvg.framework/Versions/4/ 
>> QtSvg'
>> -- 9/22: copying '/Library/Frameworks/QtXml.framework/Versions/4/ 
>> QtXml'
>> -- 10/22: copying '~/Downloads/QtTest/./install/QtTest.app/Contents/ 
>> MacOS/plugins/imageformats/libqtiff.dylib'
>> -- 11/22: *NO~T* copying '~/Downloads/QtTest/./install/QtTest.app/ 
>> Contents/MacOS/QtTest'
>> -- fixup_bundle: fixing...
>> -- 12/22: fixing up '~/Downloads/QtTest/install/QtTest.app/Contents/ 
>> MacOS/libqgif.dylib'
>> -- 13/22: fixing up '~/Downloads/QtTest/install/QtTest.app/Contents/ 
>> Frameworks/QtCore.framework/Versions/4/QtCore'
>> -- 14/22: fixing up '~/Downloads/QtTest/install/QtTest.app/Contents/ 
>> Frameworks/QtGui.framework/Versions/4/QtGui'
>> -- 15/22: fixing up '~/Downloads/QtTest/install/QtTest.app/Contents/ 
>> MacOS/libqico.dylib'
>> -- 16/22: fixing up '~/Downloads/QtTest/install/QtTest.app/Contents/ 
>> MacOS/libqjpeg.dylib'
>> 
>> 
>> And this may be useful too:
>> $ otool -L /Developer/Applications/Qt/plugins/imageformats/ 
>> libqgif.dylib
>> /Developer/Applications/Qt/plugins/imageformats/libqgif.dylib:
>> 	libqgif.dylib (compatibility version 0.0.0, current version 0.0.0)
>> 	QtGui.framework/Versions/4/QtGui (compatibility version 4.6.0,  
>> current version 4.6.2)
>> 	QtCore.framework/Versions/4/QtCore (compatibility version 4.6.0,  
>> current version 4.6.2)
>> 	/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current  
>> version 7.9.0)
>> 	/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current  
>> version 103.0.0)
>> 	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current  
>> version 125.0.0)
>> 
>> 
>> Any thoughts or suggestions, before I dive too deep into  
>> GetPrerequisites.cmake?
>> 
>> Thanks,
>> Brad
>> 
>> ========================================================
>> Bradley Lowekamp
>> Lockheed Martin Contractor for
>> Office of High Performance Computing and Communications
>> National Library of Medicine
>> blowekamp at mail.nih.gov
>> 
>> 
>> _______________________________________________
>> 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
> 

========================================================
Bradley Lowekamp  
Lockheed Martin Contractor for
Office of High Performance Computing and Communications
National Library of Medicine 
blowekamp at mail.nih.gov


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20100312/88769554/attachment-0001.htm>


More information about the CMake mailing list