Of course; @rpath is much better, with that change I can now copy my plugin to any other Qt Creator OSX installation, even with another username :-) Thanks Eike!
Rgrds Henry On 2015-02-06 12:19, Ziller Eike wrote: > better replace "/Users/henry/Qt/Qt\ > Creator.app/Contents/Frameworks/QtNetwork.framework/Versions/5/QtNetwork” > by "@rpath/Frameworks/QtNetwork.framework/Versions/5/QtNetwork” > which would then be a “distributable” version. > > Otherwise the easiest and recommended way to develop your own plugin, is to > use your own build of Qt Creator for development. > And then “deploy” your plugin (fixing the install names) as a packaging step. > Finally, this problem will hopefully be resolved if/when Qt uses @rpath style > linking instead of absolute paths. > > Br, Eike > >> On Feb 6, 2015, at 10:47, Henry Skoglund <[email protected]> wrote: >> >> Re: plugins in OSX, I also discovered this, but what I do, every time >> after I rebuild my plugin and copy it to inside Qt Creator, I run a >> shell script to fixup the paths, I've included it below. It might be >> useful for you also. >> >> Rgrds Henry >> >> ----------------------------------------------------------------------------------- >> #!/bin/bash >> # >> # HS 2014-02-07 Updated for Qt 5.2 >> # HS 2014-02-22 Qt 5.2.1 >> # HS 2014-05-21 Qt 5.3.1 and Qt Creator 3.1.2 >> # HS 2015-01-04 Qt 5.4 and Qt Creator 3.3 >> # >> # Solve the double QT runtime problem in OSX for QtCreator plugins by >> running install_name_tool on our plugin dll. >> # This will change the pickup path for the common five framework DLLs >> used by most plugins: >> # QtCore, QtConcurrent, QtGui, QtNetwork and QtWidgets. >> # So we change the path from the "unbundled" compiler specific >> framework versions to the "bundled" ones inside the QtCreator app. >> # >> install_name_tool -change >> /Users/henry/Qt/5.4/clang_64/lib/QtWidgets.framework/Versions/5/QtWidgets >> /Users/henry/Qt/Qt\ >> Creator.app/Contents/Frameworks/QtWidgets.framework/Versions/5/QtWidgets >> /Users/henry/Qt/Qt\ Creator.app/Contents/PlugIns/myFancyPlugin.dylib >> install_name_tool -change >> /Users/henry/Qt/5.4/clang_64/lib/QtGui.framework/Versions/5/QtGui >> /Users/henry/Qt/Qt\ >> Creator.app/Contents/Frameworks/QtGui.framework/Versions/5/QtGui >> /Users/henry/Qt/Qt\ Creator.app/Contents/PlugIns/myFancyPlugin.dylib >> install_name_tool -change >> /Users/henry/Qt/5.4/clang_64/lib/QtCore.framework/Versions/5/QtCore >> /Users/henry/Qt/Qt\ >> Creator.app/Contents/Frameworks/QtCore.framework/Versions/5/QtCore >> /Users/henry/Qt/Qt\ Creator.app/Contents/PlugIns/myFancyPlugin.dylib >> install_name_tool -change >> /Users/henry/Qt/5.4/clang_64/lib/QtConcurrent.framework/Versions/5/QtConcurrent >> /Users/henry/Qt/Qt\ >> Creator.app/Contents/Frameworks/QtConcurrent.framework/Versions/5/QtConcurrent >> /Users/henry/Qt/Qt\ Creator.app/Contents/PlugIns/myFancyPlugin.dylib >> install_name_tool -change >> /Users/henry/Qt/5.4/clang_64/lib/QtNetwork.framework/Versions/5/QtNetwork >> /Users/henry/Qt/Qt\ >> Creator.app/Contents/Frameworks/QtNetwork.framework/Versions/5/QtNetwork >> /Users/henry/Qt/Qt\ Creator.app/Contents/PlugIns/myFancyPlugin.dylib >> ----------------------------------------------------------------------------------- >> >> On 2015-02-06 09:22, Ziller Eike wrote: >>> >>>> On Jan 31, 2015, at 13:10, Maskim Klimov <[email protected]> wrote: >>>> >>>> It looks like there are some problems with running QtCreator external >>>> plugins under Mac OS X. >>>> 1. The function "bool MimeDatabase::addMimeTypes(const QString &fileName, >>>> QString *errorMessage)". >>>> It simply opens the file and passes it to "bool >>>> MimeDatabasePrivate::addMimeTypes(QIODevice *device, const QString >>>> &fileName, QString *errorMessage)». But It fails to open the file from >>>> plugin project resources under Mac OS X. On the contrary, manual file >>>> opening and invoking "bool MimeDatabase::addMimeTypes(QIODevice *device, >>>> QString *errorMessage)» works good. >>>> It seems like resource files are not shared between the plugin and >>>> QtCreator instance (may be it is global problem with Qt resources under >>>> Mac OS X). >>>> >>>> 2. Pure virtual method QWidget* Core::IOptionsPage::widget(). >>>> I implemented derived class with constructor that set desired options >>>> category, icon, etc. I overrode this function with simple creation of >>>> QWidget (or derived class) instance. On the QtCreator’ option page I can >>>> see my option category but a click on it leads to QtCreator’ crash with >>>> message "QWidget: Must construct a QApplication before a QWidget». >>>> >>>> By the way, I have no such problems under Linux. >>> >>> If you run your plugin against a Qt Creator binary package on OS X, you >>> must make sure that you change your plugin’s referred to install names to >>> the Qt frameworks from absolute paths to something that resolves to the Qt >>> libraries that are shipped with Qt Creator. If you don’t, the dynamic >>> linker will load two instances of the Qt libraries, which sounds like it >>> could lead to the problems you observe above. You probably get messages on >>> the console/terminal from the dynamic linker that symbols are defined twice >>> and it is undefined which are taken in which situations. >>> >>> If you run "otool -L" on your libMyPlugin.dylib you’ll see stuff like >>> /Users/Shared/qt/qt/5.4/64/qtbase/lib/QtCore.framework/Versions/5/QtCore >>> (compatibility version 5.4.0, current version 5.4.2) >>> >>> You need to change these paths to >>> "@rpath/Frameworks/QtCore.framework/Versions/5/QtCore” etc with >>> install_name_tool, e.g. >>> install_name_tool -change >>> /Users/Shared/qt/qt/5.4/64/qtbase/lib/QtCore.framework/Versions/5/QtCore >>> @rpath/Frameworks/QtCore.framework/Versions/5/QtCore libMyPlugin.dylib >>> >>> The rpath of your plugin should already have a sensible value (including >>> @executable_path/../). You can check by running “otool -l” (lower-case L) >>> on your plugin library and look for cmd LC_RPATH entries (there can be >>> multiple). >>> >>> Br, Eike >>> >> >> >> _______________________________________________ >> Qt-creator mailing list >> [email protected] >> http://lists.qt-project.org/mailman/listinfo/qt-creator > _______________________________________________ Qt-creator mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/qt-creator
