From a3bc5c293617450ebaf59dc549c7b0f3425e9cc9 Mon Sep 17 00:00:00 2001 From: Roland Winklmeier Date: Tue, 25 Apr 2017 13:27:21 +0200 Subject: [PATCH] Add /bin to library lookup paths Summary: This change adds /bin to the library lookup paths. Without, QFactoryLoader is not able to find the Qt plugins on Mac OS since on this platform the hard coded path defaults to 'foo.app/Contents/MacOS' for app bundles. This change also adds the installation of QtPrintSupport framework which is a dependency from cocoa platform plugin. ref T48 Reviewers: kbasan, msutcliffe Reviewed By: kbasan Subscribers: jenkins Maniphest Tasks: T48 Differential Revision: https://dev.swift-project.org/D15 --- install.pri | 3 ++- installer/installbuilder/qt5-binaries.xml | 3 +++ samples/blackmisc/main.cpp | 4 ++++ samples/blackmiscdbus/main.cpp | 6 ++++++ samples/blackmiscquantities/main.cpp | 4 ++++ samples/blackmiscsim/main.cpp | 7 ++++++- samples/cliclient/main.cpp | 5 +++++ samples/hotkey/main.cpp | 5 +++++ samples/weatherdata/main.cpp | 4 ++++ src/swiftcore/main.cpp | 4 ++++ src/swiftdata/main.cpp | 4 ++++ src/swiftguistandard/main.cpp | 4 ++++ src/swiftlauncher/main.cpp | 4 ++++ 13 files changed, 55 insertions(+), 2 deletions(-) diff --git a/install.pri b/install.pri index dfe84311e..d3e1f0c58 100644 --- a/install.pri +++ b/install.pri @@ -31,7 +31,8 @@ else:macx { qt5_target.extra += rsync -avz --exclude \'Headers*\' --exclude \'*debug*\' $$[QT_INSTALL_LIBS]/QtXml.framework/ $${PREFIX}/lib/QtXml.framework/ && qt5_target.extra += rsync -avz --exclude \'Headers*\' --exclude \'*debug*\' $$[QT_INSTALL_LIBS]/QtMultimedia.framework/ $${PREFIX}/lib/QtMultimedia.framework/ && qt5_target.extra += rsync -avz --exclude \'Headers*\' --exclude \'*debug*\' $$[QT_INSTALL_LIBS]/QtSvg.framework/ $${PREFIX}/lib/QtSvg.framework/ && - qt5_target.extra += rsync -avz --exclude \'Headers*\' --exclude \'*debug*\' $$[QT_INSTALL_LIBS]/QtWidgets.framework/ $${PREFIX}/lib/QtWidgets.framework/ + qt5_target.extra += rsync -avz --exclude \'Headers*\' --exclude \'*debug*\' $$[QT_INSTALL_LIBS]/QtWidgets.framework/ $${PREFIX}/lib/QtWidgets.framework/ && + qt5_target.extra += rsync -avz --exclude \'Headers*\' --exclude \'*debug*\' $$[QT_INSTALL_LIBS]/QtPrintSupport.framework/ $${PREFIX}/lib/QtPrintSupport.framework/ } else:unix: { QT5_LIBRARIES *= libQt5Core.so.5 diff --git a/installer/installbuilder/qt5-binaries.xml b/installer/installbuilder/qt5-binaries.xml index f5dd2310d..035c33960 100644 --- a/installer/installbuilder/qt5-binaries.xml +++ b/installer/installbuilder/qt5-binaries.xml @@ -142,6 +142,9 @@ ../../dist/lib/QtNetwork.framework + + ../../dist/lib/QtPrintSupport.framework + ../../dist/lib/QtSvg.framework diff --git a/samples/blackmisc/main.cpp b/samples/blackmisc/main.cpp index 11e9b6e75..12d467de4 100644 --- a/samples/blackmisc/main.cpp +++ b/samples/blackmisc/main.cpp @@ -8,6 +8,7 @@ */ #include "blackcore/application.h" +#include "blackmisc/directoryutils.h" #include "samplesalgorithm.h" #include "sampleschangeobject.h" #include "samplescontainer.h" @@ -32,6 +33,9 @@ int main(int argc, char *argv[]) { // I use CGuiApplication and not core application // otherwise no QPixmap metadata (metadata sample) +#ifdef Q_OS_MAC + QCoreApplication::addLibraryPath(CDirectoryUtils::applicationDirectoryPath()); +#endif QCoreApplication qa(argc, argv); CApplication a(CApplicationInfo::Sample); Q_UNUSED(qa); diff --git a/samples/blackmiscdbus/main.cpp b/samples/blackmiscdbus/main.cpp index d0c626354..3bfa27cab 100644 --- a/samples/blackmiscdbus/main.cpp +++ b/samples/blackmiscdbus/main.cpp @@ -11,6 +11,7 @@ //! \ingroup sampleblackmiscdbus #include "blackmisc/dbusserver.h" +#include "blackmisc/directoryutils.h" #include "blackmisc/registermetadata.h" #include "blackmisc/network/networkutils.h" #include "blackmisc/dbusutils.h" @@ -28,6 +29,8 @@ #include #include +using namespace BlackMisc; + //! main int main(int argc, char *argv[]) { @@ -35,6 +38,9 @@ int main(int argc, char *argv[]) // is just for testing, I did not split it up BlackMisc::registerMetadata(); +#ifdef Q_OS_MAC + QCoreApplication::addLibraryPath(CDirectoryUtils::applicationDirectoryPath()); +#endif QCoreApplication a(argc, argv); QTextStream out(stdout, QIODevice::WriteOnly); QTextStream qtin(stdin); diff --git a/samples/blackmiscquantities/main.cpp b/samples/blackmiscquantities/main.cpp index 90659c2af..0a87a4436 100644 --- a/samples/blackmiscquantities/main.cpp +++ b/samples/blackmiscquantities/main.cpp @@ -14,6 +14,7 @@ #include "samplesgeo.h" #include "samplesphysicalquantities.h" #include "blackcore/application.h" +#include "blackmisc/directoryutils.h" #include #include @@ -28,6 +29,9 @@ using namespace BlackCore; //! main int main(int argc, char *argv[]) { +#ifdef Q_OS_MAC + QCoreApplication::addLibraryPath(CDirectoryUtils::applicationDirectoryPath()); +#endif QCoreApplication qa(argc, argv); CApplication a; Q_UNUSED(a); diff --git a/samples/blackmiscsim/main.cpp b/samples/blackmiscsim/main.cpp index eaf026b37..99ed8f9d2 100644 --- a/samples/blackmiscsim/main.cpp +++ b/samples/blackmiscsim/main.cpp @@ -15,6 +15,7 @@ #include "samplesmodelmapping.h" #include "samplesvpilotrules.h" #include "blackcore/application.h" +#include "blackmisc/directoryutils.h" #include #include @@ -24,10 +25,14 @@ #include #include +using namespace BlackMisc; + //! main int main(int argc, char *argv[]) { - +#ifdef Q_OS_MAC + QCoreApplication::addLibraryPath(CDirectoryUtils::applicationDirectoryPath()); +#endif QCoreApplication qa(argc, argv); BlackCore::CApplication a; Q_UNUSED(a); diff --git a/samples/cliclient/main.cpp b/samples/cliclient/main.cpp index 5d108f1e7..d07a1bfa1 100644 --- a/samples/cliclient/main.cpp +++ b/samples/cliclient/main.cpp @@ -12,16 +12,21 @@ #include "reader.h" #include "client.h" +#include "blackmisc/directoryutils.h" #include "blackmisc/loghandler.h" #include #include using namespace BlackSample; +using namespace BlackMisc; //! main int main(int argc, char *argv[]) { +#ifdef Q_OS_MAC + QCoreApplication::addLibraryPath(CDirectoryUtils::applicationDirectoryPath()); +#endif QCoreApplication app (argc, argv); BlackMisc::CLogHandler::instance()->install(); diff --git a/samples/hotkey/main.cpp b/samples/hotkey/main.cpp index 1c9c3286a..d488cdb0f 100644 --- a/samples/hotkey/main.cpp +++ b/samples/hotkey/main.cpp @@ -10,16 +10,21 @@ //! \file //! \ingroup samplehotkey +#include "blackmisc/directoryutils.h" #include "blackgui/components/settingshotkeycomponent.h" #include "blackgui/guiapplication.h" #include +using namespace BlackMisc; using namespace BlackGui; //! main int main(int argc, char *argv[]) { +#ifdef Q_OS_MAC + QApplication::addLibraryPath(CDirectoryUtils::applicationDirectoryPath()); +#endif CGuiApplication::highDpiScreenSupport(); QApplication qa(argc, argv); CGuiApplication a("samplehotkey", BlackMisc::CApplicationInfo::Sample, QPixmap()); diff --git a/samples/weatherdata/main.cpp b/samples/weatherdata/main.cpp index 4a709782b..54e0946d4 100644 --- a/samples/weatherdata/main.cpp +++ b/samples/weatherdata/main.cpp @@ -10,6 +10,7 @@ //! \file //! \ingroup sampleweatherdata +#include "blackmisc/directoryutils.h" #include "blackmisc/loghandler.h" #include "blackmisc/registermetadata.h" #include "reader.h" @@ -26,6 +27,9 @@ using namespace BlackMisc::PhysicalQuantities; //! main int main(int argc, char *argv[]) { +#ifdef Q_OS_MAC + QCoreApplication::addLibraryPath(CDirectoryUtils::applicationDirectoryPath()); +#endif QCoreApplication a(argc, argv); BlackMisc::registerMetadata(); CLogHandler::instance()->install(true); diff --git a/src/swiftcore/main.cpp b/src/swiftcore/main.cpp index 95e232d04..9d54b0f4b 100644 --- a/src/swiftcore/main.cpp +++ b/src/swiftcore/main.cpp @@ -10,6 +10,7 @@ #include "blackcore/corefacadeconfig.h" #include "blackgui/guiapplication.h" #include "blackmisc/icons.h" +#include "blackmisc/directoryutils.h" #include "swiftcore.h" #include @@ -25,6 +26,9 @@ using namespace BlackGui; int main(int argc, char *argv[]) { //! [SwiftApplicationDemo] +#ifdef Q_OS_MAC + QApplication::addLibraryPath(CDirectoryUtils::applicationDirectoryPath()); +#endif CGuiApplication::highDpiScreenSupport(); QApplication qa(argc, argv); Q_UNUSED(qa); // init of qa is required, but qa not used diff --git a/src/swiftdata/main.cpp b/src/swiftdata/main.cpp index 97fb0c39b..a11d88b9a 100644 --- a/src/swiftdata/main.cpp +++ b/src/swiftdata/main.cpp @@ -9,6 +9,7 @@ #include "blackcore/webreaderflags.h" #include "blackgui/guiapplication.h" +#include "blackmisc/directoryutils.h" #include "blackmisc/icons.h" #include "swiftdata.h" @@ -23,6 +24,9 @@ using namespace BlackGui; int main(int argc, char *argv[]) { +#ifdef Q_OS_MAC + QApplication::addLibraryPath(CDirectoryUtils::applicationDirectoryPath()); +#endif CGuiApplication::highDpiScreenSupport(); QApplication qa(argc, argv); Q_UNUSED(qa); diff --git a/src/swiftguistandard/main.cpp b/src/swiftguistandard/main.cpp index 70425faa8..3c03261fa 100644 --- a/src/swiftguistandard/main.cpp +++ b/src/swiftguistandard/main.cpp @@ -9,6 +9,7 @@ #include "blackgui/enableforframelesswindow.h" #include "blackgui/guiapplication.h" +#include "blackmisc/directoryutils.h" #include "swiftguistd.h" #include "swiftguistdapplication.h" @@ -22,6 +23,9 @@ using namespace BlackCore; int main(int argc, char *argv[]) { //! [SwiftApplicationDemo] +#ifdef Q_OS_MAC + QApplication::addLibraryPath(CDirectoryUtils::applicationDirectoryPath()); +#endif CGuiApplication::highDpiScreenSupport(); QApplication qa(argc, argv); Q_UNUSED(qa); // application init needed diff --git a/src/swiftlauncher/main.cpp b/src/swiftlauncher/main.cpp index c38b3fa99..49e9331e3 100644 --- a/src/swiftlauncher/main.cpp +++ b/src/swiftlauncher/main.cpp @@ -11,6 +11,7 @@ #include "blackgui/guiapplication.h" #include "blackcore/registermetadata.h" #include "blackcore/db/databasereaderconfig.h" +#include "blackmisc/directoryutils.h" #include "blackmisc/logmessage.h" #include "blackmisc/icons.h" @@ -29,6 +30,9 @@ using namespace BlackCore::Db; int main(int argc, char *argv[]) { //! [SwiftApplicationDemo] +#ifdef Q_OS_MAC + QApplication::addLibraryPath(CDirectoryUtils::applicationDirectoryPath()); +#endif CGuiApplication::highDpiScreenSupport(); QApplication qa(argc, argv); // needed Q_UNUSED(qa);