> On Sep 28, 2015, at 2:30 PM, Massimo Callegari <[email protected]> > wrote: > > On Monday 28 September 2015 19:09:11 Massimo Callegari wrote: >>> But please guys, when introducing such an important change, you are warmthly >>> invited to mention it in a visible place. > >> It's in the changelog. > >> But I confess the line you're referring to does not indicate that anything >> should break. Qt being build with rpath should enable more, but not remove >> functionality that existed. > >> Can you explain what broke for you?
From what I can see, nothing is "broken" for him in the sense he is not limited from doing anything he was previously able to do. > Since Qt 4.8 and up to Qt 5.4.2 I was using the install_name_tool procedure > as described here: > http://doc.qt.io/qt-5/osx-deployment.html > With prebuilt Qt 5.5.x clang64, QtFrameworks don't use absolute paths > anymore, but instead they use @rpath, so calling something like this > > install_name_tool -change @rpath/QtCore.framework/Versions/5/QtCore > @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore > myapp.app/Contents/MacOs/myapp > appears not to be working. (and not needed anymore) Do not do that. You *want* the @rpath version; using anything but rpath-based install names on Apple platforms is an obscure edge case. If you think you need that, you almost certainly don't. We need to start code-signing our official releases to stop people from doing this. :) > If Qt is built with -rpath, then an application is in charge to tell Qt how > to resolve @rpath, thus the need of adding QMAKE_LFLAGS += > -Wl,-rpath,@executable_path/../Frameworks > > I might got it wrong, but at least this is what I got and how I made it work > back again. > If there is a proper and official way to deploy any Qt5 version in a unique > way, please point me to the right documentation. That is the right way and always has been. Ideally you should use: QMAKE_RPATHDIR = @executable_path/../Frameworks instead of specifying the linker flag manually, but the idea is the same. These are basic aspects of OS X development which Qt doesn't add anything special to, and so the deployment process for Qt 5 frameworks is identical to the deployment process for "any other OS X framework". Basically, make sure your app has @executable_path/../Frameworks in its rpath list, and don't touch the Qt frameworks or the install names that get linked into your binary. If you are ever using install_name_tool to post-process your binary, you are probably doing something wrong, or your dependencies are doing something wrong (for example, Qt < 5.5). I agree we should update the "OS X Deployment" documentation (and possibly link to Apple documentation on dyld and rpaths, and how they work). > Obviously I am talking about deploying a Qt application and the Qt Frameworks > into a DMG package, to be run on a machine that doesn't have Qt installed. > > I am using OSX 10.10.5 and XCode 7, if this can add any value. > _______________________________________________ > Development mailing list > [email protected] > http://lists.qt-project.org/mailman/listinfo/development In closing, always use @rpath-based install names, and never use install_name_tool. -- Jake Petroules - jake.petroules at petroules.com
_______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
