Merge branch 'cmake-gui-osx-symlink-qt5-plugin' into release
This commit is contained in:
commit
cc7e9d1d90
|
@ -19,6 +19,7 @@
|
|||
#include <QApplication>
|
||||
#include <QDir>
|
||||
#include <QLocale>
|
||||
#include <QString>
|
||||
#include <QTextCodec>
|
||||
#include <QTranslator>
|
||||
#include <cmsys/CommandLineArguments.hxx>
|
||||
|
@ -40,6 +41,7 @@ static const char* cmDocumentationOptions[][2] = { { 0, 0 } };
|
|||
|
||||
#if defined(Q_OS_MAC)
|
||||
static int cmOSXInstall(std::string dir);
|
||||
static void cmAddPluginPath();
|
||||
#endif
|
||||
|
||||
int main(int argc, char** argv)
|
||||
|
@ -81,6 +83,15 @@ int main(int argc, char** argv)
|
|||
}
|
||||
#endif
|
||||
|
||||
// When we are on OSX and we are launching cmake-gui from a symlink, the
|
||||
// application will fail to launch as it can't find the qt.conf file which
|
||||
// tells it what the name of the plugin folder is. We need to add this path
|
||||
// BEFORE the application is constructed as that is what triggers the
|
||||
// searching for the platform plugins
|
||||
#if defined(Q_OS_MAC)
|
||||
cmAddPluginPath();
|
||||
#endif
|
||||
|
||||
QApplication app(argc, argv);
|
||||
|
||||
setlocale(LC_NUMERIC, "C");
|
||||
|
@ -215,4 +226,27 @@ static int cmOSXInstall(std::string dir)
|
|||
? 0
|
||||
: 1;
|
||||
}
|
||||
|
||||
// Locate the PlugIns directory and add it to the QApplication library paths.
|
||||
// We need to resolve all symlinks so we have a known relative path between
|
||||
// MacOS/CMake and the PlugIns directory.
|
||||
//
|
||||
// Note we are using cmSystemTools since Qt can't provide the path to the
|
||||
// executable before the QApplication is created, and that is when plugin
|
||||
// searching occurs.
|
||||
static void cmAddPluginPath()
|
||||
{
|
||||
std::string const& path = cmSystemTools::GetCMakeGUICommand();
|
||||
if (path.empty()) {
|
||||
return;
|
||||
}
|
||||
std::string const& realPath = cmSystemTools::GetRealPath(path);
|
||||
QFileInfo appPath(QString::fromLocal8Bit(realPath.c_str()));
|
||||
QDir pluginDir = appPath.dir();
|
||||
bool const foundPluginDir = pluginDir.cd("../PlugIns");
|
||||
if (foundPluginDir) {
|
||||
QApplication::addLibraryPath(pluginDir.path());
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue