[CMake] Qt assistant in OsX application bundle
Martin Guillon
MGuillon at movea.com
Wed Mar 3 10:25:14 EST 2010
Ok so we do exactly the same thing (except that I use qt 4.6.2 right now)
Thanks for the info
-----Original Message-----
From: cmake-bounces at cmake.org [mailto:cmake-bounces at cmake.org] On Behalf Of Clinton Stimpson
Sent: Wednesday, March 03, 2010 4:20 PM
To: Martin Guillon
Cc: Michael Jackson; cmake at cmake.org; Michael Wild
Subject: Re: [CMake] Qt assistant in OsX application bundle
On Wednesday 03 March 2010 08:07:17 am Martin Guillon wrote:
> I tried exactly your layout and I still get the error.
> So a few questions:
> - can you show me the qt.conf of your Assistant.app
Its empty.
> - where did you get the Assistant.app? I build qt myself so that I
> can choose to install qt (carbon) in a directory of my choice. So the
> assistant comes from there. - Which version of Qt?
I got assistant.app from a Qt 4.5.2 (carbon) installation.
> - how did you change the path where the executable looks for
> frameworks? (I used cmake which internally changes absolute paths
> written during Assistant build to "@executable_path/../Frameworks/...
> )
I use BundleUtilities.cmake on Foo.app which goes in an fixes assistant.app as well. But before that, I also add a symlink Frameworks -> ../../../Frameworks for the assistant, and a libQtCLucene.4.dylib -> ../../../libQtCLucene.4.dylib As far as I know, those symlinks are only necessary because of how BundleUtilities does it.
Clint
>
> Sorry for asking so many question, but that s the only way I can find
> why it works for you :s Thanks
>
> Martin
>
> -----Original Message-----
> From: cmake-bounces at cmake.org [mailto:cmake-bounces at cmake.org] On
> Behalf Of Clinton Stimpson Sent: Wednesday, March 03, 2010 3:51 PM
> To: Michael Wild
> Cc: Michael Jackson; cmake at cmake.org; Martin Guillon
> Subject: Re: [CMake] Qt assistant in OsX application bundle
>
>
> This works for me:
>
> Foo.app/
> -Contents/
> --plugins/
> ---sqldrivers
> --Resources/
> ---qt.conf
> --MacOS/
> ---Foo
> ---Assistant.app/
> ----Contents/
> -----plugins/ symlink to ../../../plugins
> ----Resources
> -----qt.conf
>
> You can change the location of plugins to your liking if you specify
> it in qt.conf. That also means you can do without symlinking plugins
> and tell the assistant's qt.conf to go up 3 more directories.
>
> Clint
>
> On 03/03/2010 07:20 AM, Michael Wild wrote:
> > Hmm, that's strange... Looks like you're doing the things the right
> > way...
> >
> > Have you tried making the Doc/Assistant.app/Contents/Plugins not a
> > symlink, but a copy of Bundle.app/Contents/Plugins instead? Just for
> > debugging... Moving the libqsqlite.dylib library into MacOS can't
> > help because Qt is always searching for
> > $PLUGINS_DIR/sqldrivers/libsqlite.dylib, where $PLUGINS_DIR is the
> > directory where Qt looks for plugins.
> >
> > I understand your frustration, deploying stuff on Mac OS X is a PITA.
> >
> > Michael
> >
> > On 3. Mar, 2010, at 14:47 , Martin Guillon wrote:
> >> In fact it was not solved
> >>
> >> It works great on my dev machine. But as soon as I copy my app on a
> >> machine without qt framework I get an error "Cannot Load SQLite
> >> database driver!"
> >>
> >> So let me first show you my layout
> >>
> >> Bundl.app
> >> --MacOS
> >> --Resources
> >> --Framework
> >> -----QtCore...
> >> -----QGui...
> >> -----QtXml...
> >> -----QtHelp...
> >> -----QtSql...
> >> --Plugins
> >> ----imageformats
> >> -------- .....
> >> ----sqldrivers
> >> ------libsqlite.dylib
> >> --Doc
> >> ----Assistant.app
> >> ------Frameworks (link to ../../Frameworks) ------Plugins (link to
> >> ../../Plugins)
> >> ------ Exactly the same layout as the assistant from qt/bin
> >>
> >>
> >> Now I now Assistant find the frameworks as I get another error
> >> related to that if I change anything related to the frameworks. Now
> >> I have spent
> >> 3 days of the "Cannot Load SQLite database driver!" error and I
> >> cant find the solution. I tried copying libsqlite.dylib in the
> >> MacOS folder, tried creating a empty/filled qt.conf in
> >> Bundle.app/Doc/Assistant.app/Resources. Nothing works!
> >>
> >> I really need help
> >> Thanks
> >>
> >> Martin
> >>
> >> -----Original Message-----
> >> From: cmake-bounces at cmake.org [mailto:cmake-bounces at cmake.org] On
> >> Behalf Of Martin Guillon
> >> Sent: Monday, March 01, 2010 4:18 PM
> >> To: Michael Wild; Michael Jackson
> >> Cc: cmake at cmake.org
> >> Subject: Re: [CMake] Qt assistant in OsX application bundle
> >>
> >> Thanks a lot Michael, I found the solution in ParaView!!!
> >>
> >> Martin
> >>
> >> -----Original Message-----
> >> From: Michael Wild [mailto:themiwi at gmail.com]
> >> Sent: Monday, March 01, 2010 3:14 PM
> >> To: Michael Jackson
> >> Cc: Martin Guillon; cmake at cmake.org
> >> Subject: Re: [CMake] Qt assistant in OsX application bundle
> >>
> >> But only the stable release, the CVS version doesn't anymore.
> >>
> >> Michael
> >>
> >> On 1. Mar, 2010, at 15:05 , Michael Jackson wrote:
> >>> I would take a look at the ParaView project as ParaView uses
> >>> QtAssistant for help.
> >>> _________________________________________________________
> >>> Mike Jackson mike.jackson at bluequartz.net
> >>> BlueQuartz Software www.bluequartz.net
> >>> Principal Software Engineer Dayton, Ohio
> >>>
> >>> On Mar 1, 2010, at 7:52 AM, Martin Guillon wrote:
> >>>> Hi,
> >>>>
> >>>> After successfully creating my application bundle with qt
> >>>> frameworks(thanks to all of you) I am now trying to integrate the
> >>>> qt assistant in my application bundle. I first tried to put the
> >>>> whole Assistant.app in a folder of my app bundle. But then fixing
> >>>> the bundle wouldn't work with the assistant because of the double
> >>>> level of bundle app. Then I thought that should just put the
> >>>> Assistant executable in the MacOS folder of my bundle. Then the
> >>>> fixing worked but launching the Assistant wouldn't work. It would
> >>>> just crash with a bus error during start.
> >>>>
> >>>> So did anyone successfully integrated the qt assistant in its app
> >>>> bundle?
> >>>>
> >>>> Thanks a lot
> >>>>
> >>>> Martin
> >>>>
> >>>> -----Original Message-----
> >>>> From: Michael Wild [mailto:themiwi at gmail.com]
> >>>> Sent: Thursday, February 25, 2010 9:36 AM
> >>>> To: Martin Guillon
> >>>> Cc: Werner Smekal; cmake at cmake.org
> >>>> Subject: Re: [CMake] OsX bundle including Qt framework
> >>>>
> >>>> I think this is because Qt by default loads some optional plugins
> >>>> and finds them in your Qt installation because they do not get
> >>>> copied into your application bundle automatically. Since the
> >>>> prefixes do not match, Qt is complaining... You can confirm this
> >>>> by setting the environment variables DYLD_PRINT_LIBRARIES or
> >>>> DYLD_PRINT_LIBRARIES_POST_LAUNCH to a non-empty string and then
> >>>> starting your application from the command line (i.e.
> >>>> /<path-to>/<application>.app/Contents/MacOS/<executable>, where
> >>>> you have to replace the parts in<>). Then watch for the library
> >>>> names that get loaded. Nothing should come from your Qt installation.
> >>>>
> >>>> If this is the source for the error, try including an empty
> >>>> qt.conf file in your bundle (or as a resource) as described here:
> >>>> http://doc.trolltech.com/4.6/qt-conf.html
> >>>>
> >>>> HTH
> >>>>
> >>>> Michael
> >>>>
> >>>> On 25. Feb, 2010, at 9:11 , Martin Guillon wrote:
> >>>>> A little feedback on what s happening. After using the fixbundle
> >>>>> script, my app works great on a machine without QT installed. I
> >>>>> loads the frameworks I put in the bundle perfectly. But now I
> >>>>> have a problem in my dev environment. After fixing the bundle,
> >>>>> if I start my app, I get qt errors saying it finds multiple
> >>>>> versions of qt, and then some of my executables wont start. That
> >>>>> s not that bad in my dev environment but what if the user already have a qt somewhere?
> >>>>>
> >>>>> Is there a way to make so that my app only see the qt frameworks
> >>>>> in the bundle?
> >>>>>
> >>>>> Thanks
> >>>>>
> >>>>> MArtin
> >>>>>
> >>>>> -----Original Message-----
> >>>>> From: cmake-bounces at cmake.org [mailto:cmake-bounces at cmake.org]
> >>>>> On Behalf Of Martin Guillon
> >>>>> Sent: Wednesday, February 24, 2010 4:05 PM
> >>>>> To: Werner Smekal; cmake at cmake.org
> >>>>> Subject: Re: [CMake] OsX bundle including Qt framework
> >>>>>
> >>>>> Thanks a lot, it now works perfectly!!!!
> >>>>>
> >>>>> MArtin
> >>>>>
> >>>>> -----Original Message-----
> >>>>> From: cmake-bounces at cmake.org [mailto:cmake-bounces at cmake.org]
> >>>>> On Behalf Of Werner Smekal
> >>>>> Sent: Wednesday, February 24, 2010 3:34 PM
> >>>>> To: cmake at cmake.org
> >>>>> Subject: Re: [CMake] OsX bundle including Qt framework
> >>>>>
> >>>>> -----BEGIN PGP SIGNED MESSAGE-----
> >>>>> Hash: SHA1
> >>>>>
> >>>>> Hi Martin,
> >>>>>
> >>>>>> I use cmake to make an osx bundle of my qt application. During
> >>>>>> install I copy qt framework from my qt install dir to the
> >>>>>> Frameworks directory of my bundle.
> >>>>>
> >>>>> This will be done automagically using the BundleUtilities module.
> >>>>> E.g. in my project I do:
> >>>>>
> >>>>> # fixup bundle, copy dynamic libraries into app bundle
> >>>>> set(APPS "\${CMAKE_INSTALL_PREFIX}/${SESSA_BUNDLE_NAME}.app")
> >>>>> # paths to executables set(DIRS
> >>>>> "${CMAKE_SOURCE_DIR}/local/Release/lib") # directories to search
> >>>>> for prerequisites
> >>>>> INSTALL(CODE "
> >>>>> include(BundleUtilities)
> >>>>> fixup_bundle(\"${APPS}\" \"\" \"${DIRS}\")
> >>>>> ")
> >>>>>
> >>>>> Look in the mailing list or in the net about BundleUtilities to
> >>>>> get more information, or look in the module.
> >>>>>
> >>>>>> The problem I have now is that when using "ostool -L " I see
> >>>>>> that my executable look for qt frameworks in a dir which is the
> >>>>>> absolute path to my qt install dir.
> >>>>>
> >>>>> Reason is, that if you link to a library, the reference inside
> >>>>> the
> >>>>> *library* (use otool -L on that library) is used and set in the
> >>>>> executable as well. You need at least to set the new reference
> >>>>> (@executable_path/....) in the executable, so that it can find
> >>>>> the libraries (if libraries depend on other libraries you need
> >>>>> to change that as well). Use install_name_tool for that.
> >>>>>
> >>>>> But everything is done by the BundleUtilities macro, so you
> >>>>> don't need to mess around here.
> >>>>>
> >>>>> HTH,
> >>>>> Werner
> >>>>>
> >>>>>> What I want is for my executable to look in the "Frameworks"
> >>>>>> directory of my bundle.
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> Is there a way to do that directly during build using Cmake?
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> Thanks
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> MArtin
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> _______________________________________________ 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
> >>>>>
> >>>>> - --
> >>>>> Dr. Werner Smekal
> >>>>> Institut fuer Angewandte Physik
> >>>>> Technische Universitaet Wien
> >>>>> Wiedner Hauptstr 8-10/134
> >>>>> A-1040 Wien
> >>>>> Austria
> >>>>> DVR-Nr: 0005886
> >>>>>
> >>>>> email: smekal at iap.tuwien.ac.at (GPG: EDCAF4A79)
> >>>>> web: http://www.iap.tuwien.ac.at/~smekal
> >>>>> phone: +43-(0)1-58801-13463 (office)
> >>>>> +43-(0)1-58801-13469 (laboratory)
> >>>>> fax: +43-(0)1-58801-13499
> >>>>> -----BEGIN PGP SIGNATURE-----
> >>>>> Version: GnuPG v1.4.10 (Darwin)
> >>>>> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
> >>>>>
> >>>>> iQEcBAEBAgAGBQJLhTjHAAoJEG1QQcXtyvSnRK0H/3NwjN7DB7IH339Szs0iqTMf
> >>>>> 3ONaiP0IIjdzer2Ak4Ao3+Yl+vVksyGCaeB/goYEy5mBbLxLNHIjY71+pS2zNk4L
> >>>>> 62tAolQZCJfRzxv9mQVZsX92wHw5DC1mtPnyqWl1DuQu4lrp+WVQlfareC25keI/
> >>>>> 1TBndC7A74uTz9IZJWOkUZRUgK9uHD8MRWBL4ujYJw0ocghHYjbeSxySrAGBC/oG
> >>>>> DRp8l6N3UfFzTRVE+FZUnBdKcMkSTQXTdzK6oBtszKwJxkCKbcI94lAOgYqA49kU
> >>>>> TWcxwQEbYXoXXFzI1Qo5evG2NgjDmicHluXnSuNNMTkVGoxnJbECZcoi3d5dlJU=
> >>>>> =TUd7
> >>>>> -----END PGP SIGNATURE-----
> >>>>> _______________________________________________
> >>>>> 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
> >>>>> _______________________________________________
> >>>>> 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
> >>>>> _______________________________________________
> >>>>> 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
> >>>>
> >>>> _______________________________________________
> >>>> 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
> >>>
> >>> _______________________________________________
> >>> 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
> >>
> >> _______________________________________________
> >> 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
> >
> > _______________________________________________
> > 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
>
> _______________________________________________
> 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
>
_______________________________________________
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
More information about the CMake
mailing list