forked from qt-creator/qt-creator
QbsProjectManager: Support using an installed qbs.
Distributions will want to make Creator work with their qbs package instead of adding it a second time via the submodule, so we support that by checking for the QBS_INSTALL_DIR environment variable. This supersedes the current mechanism using QBS_SOURCE_DIR and QBS_BUILD_DIR. Change-Id: I2cff651cd23ea47b1a1434e33f80cb74ca0fc96b Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
@@ -49,7 +49,8 @@ SUBDIRS = \
|
|||||||
qnx \
|
qnx \
|
||||||
clearcase
|
clearcase
|
||||||
|
|
||||||
exists(../shared/qbs/qbs.pro): \
|
isEmpty(QBS_INSTALL_DIR): QBS_INSTALL_DIR = $$(QBS_INSTALL_DIR)
|
||||||
|
exists(../shared/qbs/qbs.pro)|!isEmpty(QBS_INSTALL_DIR): \
|
||||||
SUBDIRS += \
|
SUBDIRS += \
|
||||||
qbsprojectmanager
|
qbsprojectmanager
|
||||||
|
|
||||||
|
|||||||
@@ -423,9 +423,9 @@ void QbsProject::parse(const QVariantMap &config, const Environment &env, const
|
|||||||
params.setIgnoreDifferentProjectFilePath(false);
|
params.setIgnoreDifferentProjectFilePath(false);
|
||||||
params.setEnvironment(env.toProcessEnvironment());
|
params.setEnvironment(env.toProcessEnvironment());
|
||||||
qbs::Preferences *prefs = QbsManager::preferences();
|
qbs::Preferences *prefs = QbsManager::preferences();
|
||||||
const QString buildDir = qbsBuildDir();
|
const QString qbsDir = qbsDirectory();
|
||||||
params.setSearchPaths(prefs->searchPaths(buildDir));
|
params.setSearchPaths(prefs->searchPaths(qbsDir));
|
||||||
params.setPluginPaths(prefs->pluginPaths(buildDir));
|
params.setPluginPaths(prefs->pluginPaths(qbsDir));
|
||||||
|
|
||||||
// Do the parsing:
|
// Do the parsing:
|
||||||
prepareForParsing();
|
prepareForParsing();
|
||||||
@@ -658,12 +658,12 @@ void QbsProject::updateDeploymentInfo(const qbs::Project *project)
|
|||||||
activeTarget()->setDeploymentData(deploymentData);
|
activeTarget()->setDeploymentData(deploymentData);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QbsProject::qbsBuildDir() const
|
QString QbsProject::qbsDirectory() const
|
||||||
{
|
{
|
||||||
QString buildDir = Environment::systemEnvironment().value(QLatin1String("QBS_BUILD_DIR"));
|
const QString qbsInstallDir = QLatin1String(QBS_INSTALL_DIR);
|
||||||
if (buildDir.isEmpty())
|
if (!qbsInstallDir.isEmpty())
|
||||||
buildDir = ICore::resourcePath() + QLatin1String("/qbs");
|
return qbsInstallDir;
|
||||||
return buildDir;
|
return ICore::resourcePath() + QLatin1String("/qbs");
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ private:
|
|||||||
void updateQmlJsCodeModel(const qbs::ProjectData &prj);
|
void updateQmlJsCodeModel(const qbs::ProjectData &prj);
|
||||||
void updateApplicationTargets(const qbs::ProjectData &projectData);
|
void updateApplicationTargets(const qbs::ProjectData &projectData);
|
||||||
void updateDeploymentInfo(const qbs::Project *project);
|
void updateDeploymentInfo(const qbs::Project *project);
|
||||||
QString qbsBuildDir() const;
|
QString qbsDirectory() const;
|
||||||
|
|
||||||
QbsManager *const m_manager;
|
QbsManager *const m_manager;
|
||||||
const QString m_projectName;
|
const QString m_projectName;
|
||||||
|
|||||||
@@ -1,18 +1,17 @@
|
|||||||
include(../../qtcreatorplugin.pri)
|
include(../../qtcreatorplugin.pri)
|
||||||
|
|
||||||
# Look for qbs in the environment
|
# Look for qbs in the environment
|
||||||
isEmpty(QBS_SOURCE_DIR): QBS_SOURCE_DIR = $$(QBS_SOURCE_DIR)
|
isEmpty(QBS_INSTALL_DIR): QBS_INSTALL_DIR = $$(QBS_INSTALL_DIR)
|
||||||
isEmpty(QBS_BUILD_DIR): QBS_BUILD_DIR = $$(QBS_BUILD_DIR)
|
isEmpty(QBS_INSTALL_DIR) {
|
||||||
# Fallback to the submodule
|
QBS_SOURCE_DIR = $$PWD/../../shared/qbs
|
||||||
isEmpty(QBS_SOURCE_DIR): QBS_SOURCE_DIR = $$PWD/../../shared/qbs
|
|
||||||
isEmpty(QBS_BUILD_DIR): QBS_BUILD_DIR = $$IDE_BUILD_TREE/src/shared/qbs
|
|
||||||
|
|
||||||
include($$QBS_SOURCE_DIR/src/lib/use.pri)
|
include($$QBS_SOURCE_DIR/src/lib/use.pri)
|
||||||
# Mac: fix rpath for qbscore soname
|
macx:QMAKE_LFLAGS += -Wl,-rpath,@loader_path/../ # Mac: fix rpath for qbscore soname
|
||||||
macx:QMAKE_LFLAGS += -Wl,-rpath,@loader_path/../
|
} else {
|
||||||
|
include($${QBS_INSTALL_DIR}/include/qbs/use_installed.pri)
|
||||||
|
}
|
||||||
|
QBS_INSTALL_DIR_FWD_SLASHES = $$replace(QBS_INSTALL_DIR, \\\\, /)
|
||||||
|
DEFINES += QBS_INSTALL_DIR=\\\"$$QBS_INSTALL_DIR_FWD_SLASHES\\\"
|
||||||
|
|
||||||
QBS_BUILD_DIR_FWD_SLASHES = $$replace(QBS_BUILD_DIR, \\\\, /)
|
|
||||||
DEFINES += QBS_BUILD_DIR=\\\"$$QBS_BUILD_DIR_FWD_SLASHES\\\"
|
|
||||||
DEFINES += \
|
DEFINES += \
|
||||||
QBSPROJECTMANAGER_LIBRARY
|
QBSPROJECTMANAGER_LIBRARY
|
||||||
|
|
||||||
|
|||||||
@@ -5,11 +5,12 @@ import "../QtcPlugin.qbs" as QtcPlugin
|
|||||||
QtcPlugin {
|
QtcPlugin {
|
||||||
name: "QbsProjectManager"
|
name: "QbsProjectManager"
|
||||||
|
|
||||||
property var externalQbsDefines: project.useExternalQbs
|
property var externalQbsIncludes: project.useExternalQbs
|
||||||
? ['QBS_BUILD_DIR="' + project.qbs_build_dir +'"'] : []
|
? [project.qbs_install_dir + "/include/qbs"] : []
|
||||||
property var externalQbsIncludes: project.useExternalQbs ? [project.qbs_source_dir + "/src/lib"] : []
|
property var externalQbsLibraryPaths: project.useExternalQbs
|
||||||
property var externalQbsLibraryPaths: project.useExternalQbs ? [project.qbs_build_dir + "/lib"] : []
|
? [project.qbs_install_dir + "/lib"] : []
|
||||||
property var externalQbsRPaths: project.useExternalQbs ? [project.qbs_build_dir + "/lib"] : []
|
property var externalQbsRPaths: project.useExternalQbs
|
||||||
|
? [project.qbs_install_dir + "/lib"] : []
|
||||||
property var externalQbsDynamicLibraries: {
|
property var externalQbsDynamicLibraries: {
|
||||||
var libs = []
|
var libs = []
|
||||||
if (!project.useExternalQbs)
|
if (!project.useExternalQbs)
|
||||||
@@ -42,8 +43,11 @@ QtcPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
cpp.defines: base.concat([
|
cpp.defines: base.concat([
|
||||||
'QML_BUILD_STATIC_LIB'
|
'QML_BUILD_STATIC_LIB',
|
||||||
]).concat(externalQbsDefines)
|
'QBS_INSTALL_DIR="'
|
||||||
|
+ (project.useExternalQbs ? project.qbs_install_dir.split("\\").join("/") : '')
|
||||||
|
+ '"'
|
||||||
|
])
|
||||||
cpp.includePaths: base.concat(externalQbsIncludes)
|
cpp.includePaths: base.concat(externalQbsIncludes)
|
||||||
cpp.libraryPaths: base.concat(externalQbsLibraryPaths)
|
cpp.libraryPaths: base.concat(externalQbsLibraryPaths)
|
||||||
cpp.rpaths: base.concat(externalQbsRPaths)
|
cpp.rpaths: base.concat(externalQbsRPaths)
|
||||||
|
|||||||
@@ -12,9 +12,8 @@ Project {
|
|||||||
]
|
]
|
||||||
|
|
||||||
property bool qbsSubModuleExists: File.exists(qbsProject.qbsBaseDir + "/qbs.qbs")
|
property bool qbsSubModuleExists: File.exists(qbsProject.qbsBaseDir + "/qbs.qbs")
|
||||||
property path qbs_build_dir: qbs.getenv("QBS_BUILD_DIR")
|
property path qbs_install_dir: qbs.getenv("QBS_INSTALL_DIR")
|
||||||
property path qbs_source_dir: qbs.getenv("QBS_SOURCE_DIR")
|
property bool useExternalQbs: qbs_install_dir
|
||||||
property bool useExternalQbs: qbs_build_dir && qbs_source_dir
|
|
||||||
property bool buildQbsProjectManager: useExternalQbs || qbsSubModuleExists
|
property bool buildQbsProjectManager: useExternalQbs || qbsSubModuleExists
|
||||||
Project {
|
Project {
|
||||||
name: "qbs"
|
name: "qbs"
|
||||||
|
|||||||
Reference in New Issue
Block a user