forked from qt-creator/qt-creator
Add defines for relative data paths
Derive the relative paths used in code from the paths used by the build system. Change-Id: I208ee55d3c1ee76921734f5c1c6c40d3fcb9724c Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
import qbs
|
import qbs
|
||||||
import qbs.Environment
|
import qbs.Environment
|
||||||
|
import qbs.FileInfo
|
||||||
import "qtc.js" as HelperFunctions
|
import "qtc.js" as HelperFunctions
|
||||||
|
|
||||||
Module {
|
Module {
|
||||||
@@ -62,6 +63,13 @@ Module {
|
|||||||
property stringList generalDefines: [
|
property stringList generalDefines: [
|
||||||
"QT_CREATOR",
|
"QT_CREATOR",
|
||||||
'IDE_LIBRARY_BASENAME="' + libDirName + '"',
|
'IDE_LIBRARY_BASENAME="' + libDirName + '"',
|
||||||
|
'RELATIVE_PLUGIN_PATH="' + FileInfo.relativePath('/' + ide_bin_path,
|
||||||
|
'/' + ide_plugin_path) + '"',
|
||||||
|
'RELATIVE_LIBEXEC_PATH="' + FileInfo.relativePath('/' + ide_bin_path,
|
||||||
|
'/' + ide_libexec_path) + '"',
|
||||||
|
'RELATIVE_DATA_PATH="' + FileInfo.relativePath('/' + ide_bin_path,
|
||||||
|
'/' + ide_data_path) + '"',
|
||||||
|
'RELATIVE_DOC_PATH="' + FileInfo.relativePath('/' + ide_bin_path, '/' + ide_doc_path) + '"',
|
||||||
"QT_NO_CAST_TO_ASCII",
|
"QT_NO_CAST_TO_ASCII",
|
||||||
"QT_RESTRICTED_CAST_FROM_ASCII",
|
"QT_RESTRICTED_CAST_FROM_ASCII",
|
||||||
"QT_DISABLE_DEPRECATED_BEFORE=0x050600",
|
"QT_DISABLE_DEPRECATED_BEFORE=0x050600",
|
||||||
|
|||||||
@@ -147,6 +147,15 @@ osx {
|
|||||||
INSTALL_APP_PATH = $$QTC_PREFIX/bin
|
INSTALL_APP_PATH = $$QTC_PREFIX/bin
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RELATIVE_PLUGIN_PATH = $$relative_path($$IDE_PLUGIN_PATH, $$IDE_BIN_PATH)
|
||||||
|
RELATIVE_LIBEXEC_PATH = $$relative_path($$IDE_LIBEXEC_PATH, $$IDE_BIN_PATH)
|
||||||
|
RELATIVE_DATA_PATH = $$relative_path($$IDE_DATA_PATH, $$IDE_BIN_PATH)
|
||||||
|
RELATIVE_DOC_PATH = $$relative_path($$IDE_DOC_PATH, $$IDE_BIN_PATH)
|
||||||
|
DEFINES += $$shell_quote(RELATIVE_PLUGIN_PATH=\"$$RELATIVE_PLUGIN_PATH\")
|
||||||
|
DEFINES += $$shell_quote(RELATIVE_LIBEXEC_PATH=\"$$RELATIVE_LIBEXEC_PATH\")
|
||||||
|
DEFINES += $$shell_quote(RELATIVE_DATA_PATH=\"$$RELATIVE_DATA_PATH\")
|
||||||
|
DEFINES += $$shell_quote(RELATIVE_DOC_PATH=\"$$RELATIVE_DOC_PATH\")
|
||||||
|
|
||||||
INCLUDEPATH += \
|
INCLUDEPATH += \
|
||||||
$$IDE_BUILD_TREE/src \ # for <app/app_version.h> in case of actual build directory
|
$$IDE_BUILD_TREE/src \ # for <app/app_version.h> in case of actual build directory
|
||||||
$$IDE_SOURCE_TREE/src \ # for <app/app_version.h> in case of binary package with dev package
|
$$IDE_SOURCE_TREE/src \ # for <app/app_version.h> in case of binary package with dev package
|
||||||
|
|||||||
@@ -198,30 +198,14 @@ static bool copyRecursively(const QString &srcFilePath,
|
|||||||
|
|
||||||
static inline QStringList getPluginPaths()
|
static inline QStringList getPluginPaths()
|
||||||
{
|
{
|
||||||
QStringList rc;
|
QStringList rc(QDir::cleanPath(QApplication::applicationDirPath()
|
||||||
// Figure out root: Up one from 'bin'
|
+ '/' + RELATIVE_PLUGIN_PATH));
|
||||||
QDir rootDir = QApplication::applicationDirPath();
|
// Local plugin path: <localappdata>/plugins/<ideversion>
|
||||||
rootDir.cdUp();
|
|
||||||
const QString rootDirPath = rootDir.canonicalPath();
|
|
||||||
QString pluginPath;
|
|
||||||
if (Utils::HostOsInfo::isMacHost()) {
|
|
||||||
// 1) "PlugIns" (OS X)
|
|
||||||
pluginPath = rootDirPath + QLatin1String("/PlugIns");
|
|
||||||
rc.push_back(pluginPath);
|
|
||||||
} else {
|
|
||||||
// 2) "plugins" (Win/Linux)
|
|
||||||
pluginPath = rootDirPath;
|
|
||||||
pluginPath += QLatin1Char('/');
|
|
||||||
pluginPath += QLatin1String(IDE_LIBRARY_BASENAME);
|
|
||||||
pluginPath += QLatin1String("/qtcreator/plugins");
|
|
||||||
rc.push_back(pluginPath);
|
|
||||||
}
|
|
||||||
// 3) <localappdata>/plugins/<ideversion>
|
|
||||||
// where <localappdata> is e.g.
|
// where <localappdata> is e.g.
|
||||||
// "%LOCALAPPDATA%\QtProject\qtcreator" on Windows Vista and later
|
// "%LOCALAPPDATA%\QtProject\qtcreator" on Windows Vista and later
|
||||||
// "$XDG_DATA_HOME/data/QtProject/qtcreator" or "~/.local/share/data/QtProject/qtcreator" on Linux
|
// "$XDG_DATA_HOME/data/QtProject/qtcreator" or "~/.local/share/data/QtProject/qtcreator" on Linux
|
||||||
// "~/Library/Application Support/QtProject/Qt Creator" on Mac
|
// "~/Library/Application Support/QtProject/Qt Creator" on Mac
|
||||||
pluginPath = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation);
|
QString pluginPath = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation);
|
||||||
if (Utils::HostOsInfo::isAnyUnixHost() && !Utils::HostOsInfo::isMacHost())
|
if (Utils::HostOsInfo::isAnyUnixHost() && !Utils::HostOsInfo::isMacHost())
|
||||||
pluginPath += QLatin1String("/data");
|
pluginPath += QLatin1String("/data");
|
||||||
pluginPath += QLatin1Char('/')
|
pluginPath += QLatin1Char('/')
|
||||||
@@ -284,13 +268,9 @@ static inline QSettings *userSettings()
|
|||||||
return createUserSettings();
|
return createUserSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *SHARE_PATH =
|
|
||||||
Utils::HostOsInfo::isMacHost() ? "/../Resources" : "/../share/qtcreator";
|
|
||||||
|
|
||||||
void loadFonts()
|
void loadFonts()
|
||||||
{
|
{
|
||||||
const QDir dir(QCoreApplication::applicationDirPath() + QLatin1String(SHARE_PATH)
|
const QDir dir(QCoreApplication::applicationDirPath() + '/' + RELATIVE_DATA_PATH + "/fonts/");
|
||||||
+ QLatin1String("/fonts/"));
|
|
||||||
|
|
||||||
foreach (const QFileInfo &fileInfo, dir.entryInfoList(QStringList("*.ttf"), QDir::Files))
|
foreach (const QFileInfo &fileInfo, dir.entryInfoList(QStringList("*.ttf"), QDir::Files))
|
||||||
QFontDatabase::addApplicationFont(fileInfo.absoluteFilePath());
|
QFontDatabase::addApplicationFont(fileInfo.absoluteFilePath());
|
||||||
@@ -329,7 +309,8 @@ int main(int argc, char **argv)
|
|||||||
QThreadPool::globalInstance()->setMaxThreadCount(qMax(4, 2 * threadCount));
|
QThreadPool::globalInstance()->setMaxThreadCount(qMax(4, 2 * threadCount));
|
||||||
|
|
||||||
// Display a backtrace once a serious signal is delivered (Linux only).
|
// Display a backtrace once a serious signal is delivered (Linux only).
|
||||||
const QString libexecPath = QCoreApplication::applicationDirPath() + "/../libexec/qtcreator";
|
const QString libexecPath = QCoreApplication::applicationDirPath()
|
||||||
|
+ '/' + RELATIVE_LIBEXEC_PATH;
|
||||||
CrashHandlerSetup setupCrashHandler(appNameC, CrashHandlerSetup::EnableRestart, libexecPath);
|
CrashHandlerSetup setupCrashHandler(appNameC, CrashHandlerSetup::EnableRestart, libexecPath);
|
||||||
|
|
||||||
#ifdef ENABLE_QT_BREAKPAD
|
#ifdef ENABLE_QT_BREAKPAD
|
||||||
@@ -378,7 +359,7 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
// Must be done before any QSettings class is created
|
// Must be done before any QSettings class is created
|
||||||
QSettings::setPath(QSettings::IniFormat, QSettings::SystemScope,
|
QSettings::setPath(QSettings::IniFormat, QSettings::SystemScope,
|
||||||
QCoreApplication::applicationDirPath() + QLatin1String(SHARE_PATH));
|
QCoreApplication::applicationDirPath() + '/' + RELATIVE_DATA_PATH);
|
||||||
QSettings::setDefaultFormat(QSettings::IniFormat);
|
QSettings::setDefaultFormat(QSettings::IniFormat);
|
||||||
// plugin manager takes control of this settings object
|
// plugin manager takes control of this settings object
|
||||||
QSettings *settings = userSettings();
|
QSettings *settings = userSettings();
|
||||||
@@ -399,7 +380,7 @@ int main(int argc, char **argv)
|
|||||||
if (!overrideLanguage.isEmpty())
|
if (!overrideLanguage.isEmpty())
|
||||||
uiLanguages.prepend(overrideLanguage);
|
uiLanguages.prepend(overrideLanguage);
|
||||||
const QString &creatorTrPath = QCoreApplication::applicationDirPath()
|
const QString &creatorTrPath = QCoreApplication::applicationDirPath()
|
||||||
+ QLatin1String(SHARE_PATH) + QLatin1String("/translations");
|
+ '/' + RELATIVE_DATA_PATH + "/translations";
|
||||||
foreach (QString locale, uiLanguages) {
|
foreach (QString locale, uiLanguages) {
|
||||||
locale = QLocale(locale).name();
|
locale = QLocale(locale).name();
|
||||||
if (translator.load(QLatin1String("qtcreator_") + locale, creatorTrPath)) {
|
if (translator.load(QLatin1String("qtcreator_") + locale, creatorTrPath)) {
|
||||||
|
|||||||
@@ -402,9 +402,7 @@ QString ICore::userInterfaceLanguage()
|
|||||||
|
|
||||||
QString ICore::resourcePath()
|
QString ICore::resourcePath()
|
||||||
{
|
{
|
||||||
const QString sharePath = QLatin1String(Utils::HostOsInfo::isMacHost()
|
return QDir::cleanPath(QCoreApplication::applicationDirPath() + '/' + RELATIVE_DATA_PATH);
|
||||||
? "/../Resources" : "/../share/qtcreator");
|
|
||||||
return QDir::cleanPath(QCoreApplication::applicationDirPath() + sharePath);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString ICore::userResourcePath()
|
QString ICore::userResourcePath()
|
||||||
@@ -424,9 +422,7 @@ QString ICore::userResourcePath()
|
|||||||
|
|
||||||
QString ICore::documentationPath()
|
QString ICore::documentationPath()
|
||||||
{
|
{
|
||||||
const QString docPath = QLatin1String(Utils::HostOsInfo::isMacHost()
|
return QDir::cleanPath(QCoreApplication::applicationDirPath() + '/' + RELATIVE_DOC_PATH);
|
||||||
? "/../Resources/doc" : "/../share/doc/qtcreator");
|
|
||||||
return QDir::cleanPath(QCoreApplication::applicationDirPath() + docPath);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -435,21 +431,7 @@ QString ICore::documentationPath()
|
|||||||
*/
|
*/
|
||||||
QString ICore::libexecPath()
|
QString ICore::libexecPath()
|
||||||
{
|
{
|
||||||
QString path;
|
return QDir::cleanPath(QApplication::applicationDirPath() + '/' + RELATIVE_LIBEXEC_PATH);
|
||||||
switch (Utils::HostOsInfo::hostOs()) {
|
|
||||||
case Utils::OsTypeWindows:
|
|
||||||
path = QCoreApplication::applicationDirPath();
|
|
||||||
break;
|
|
||||||
case Utils::OsTypeMac:
|
|
||||||
path = QCoreApplication::applicationDirPath() + QLatin1String("/../Resources");
|
|
||||||
break;
|
|
||||||
case Utils::OsTypeLinux:
|
|
||||||
case Utils::OsTypeOtherUnix:
|
|
||||||
case Utils::OsTypeOther:
|
|
||||||
path = QCoreApplication::applicationDirPath() + QLatin1String("/../libexec/qtcreator");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return QDir::cleanPath(path);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static QString compilerString()
|
static QString compilerString()
|
||||||
|
|||||||
Reference in New Issue
Block a user