From: Oliver Wolff Date: Tue, 2 Oct 2012 09:45:13 +0000 (+0200) Subject: Use correct path to qml files when looking for them in examples X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=e20dae13601e01321ea8fd34309d6ecb3212d92b;p=konrad%2Fqtdeclarative.git Use correct path to qml files when looking for them in examples As executables might end up in different folders on different plaforms when built, examples' shared.h should not rely on having the qml files in the same folder as the executables. On Windows they end up in debug/ release by default, while they are put in foo.app/Contents/MacOs on Mac if app_bundle is set in CONFIG. Change-Id: If0cea4c186920eb4689d5941b6ff5f333d97c574 Reviewed-by: Friedemann Kleint Reviewed-by: Joerg Bornemann Reviewed-by: Samuel Rødal --- diff --git a/examples/shared/shared.h b/examples/shared/shared.h index 2a6cce0..613798f 100644 --- a/examples/shared/shared.h +++ b/examples/shared/shared.h @@ -37,13 +37,30 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ +#include #include #include #define DECLARATIVE_EXAMPLE_MAIN(NAME) int main(int argc, char* argv[]) \ {\ QGuiApplication app(argc,argv);\ QQuickView view;\ - view.setSource(QUrl::fromLocalFile(QCoreApplication::applicationDirPath() + QLatin1String("/" #NAME ".qml")));\ + QDir directory(QCoreApplication::applicationDirPath());\ + if (QGuiApplication::platformName() == QLatin1String("windows")) {\ + if (directory.absolutePath().endsWith("/debug", Qt::CaseInsensitive)\ + || directory.absolutePath().endsWith("/release", Qt::CaseInsensitive))\ + if (!directory.cdUp())\ + exit(-1);\ + } else if (QGuiApplication::platformName() == QLatin1String("Cocoa")) {\ + if (directory.absolutePath().endsWith(#NAME".app/Contents/MacOS"))\ + for (int i = 0; i < 3; ++i) {\ + if (!directory.cdUp())\ + exit(-1);\ + }\ + }\ + const QString fileName(directory.absolutePath() + "/" #NAME ".qml");\ + if (!QFile::exists(fileName))\ + exit(-1);\ + view.setSource(QUrl::fromLocalFile(fileName));\ view.show();\ return app.exec();\ }