Thanks a lot, that helps! 2015-02-06 15:05 GMT+03:00 Henry Skoglund <[email protected]>:
> 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 >>> >> >> > > -- Maksim Klimov.
_______________________________________________ Qt-creator mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/qt-creator
