[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