aboutsummaryrefslogtreecommitdiffstats
path: root/src/app/qbs
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@digia.com>2014-05-22 12:01:14 +0200
committerJoerg Bornemann <joerg.bornemann@digia.com>2014-05-23 13:59:09 +0200
commit0da3f04e71f6f77f47b10fef6736b1415b1960d2 (patch)
tree85d152e7f16838ca32ad1cbc8e8b07029a62e855 /src/app/qbs
parente00b6c86cece5752c53f78bb439a1a21db5b7674 (diff)
Sanitize the project setup API.
Ever since we introduced "overridden values", the setter for the build configuration has been pretty much an empty shell, containing only the build variant and the profile. We now make that explicit, resulting in a less confusing API that does not expect the caller to know how to encode profile and build variant information in a QVariantMap. Change-Id: I60183fc1884a884c9ceba34d7eb460c261be47ca Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'src/app/qbs')
-rw-r--r--src/app/qbs/commandlinefrontend.cpp23
1 files changed, 9 insertions, 14 deletions
diff --git a/src/app/qbs/commandlinefrontend.cpp b/src/app/qbs/commandlinefrontend.cpp
index 9c8a3b96e..4bbde7961 100644
--- a/src/app/qbs/commandlinefrontend.cpp
+++ b/src/app/qbs/commandlinefrontend.cpp
@@ -128,25 +128,22 @@ void CommandLineFrontend::start()
if (!m_parser.buildBeforeInstalling())
params.setRestoreBehavior(SetupProjectParameters::RestoreOnly);
foreach (const QVariantMap &buildConfig, m_parser.buildConfigurations()) {
- QVariantMap baseConfig;
QVariantMap userConfig = buildConfig;
- QString buildVariantKey = QLatin1String("qbs.buildVariant");
- baseConfig.insert(buildVariantKey, userConfig.take(buildVariantKey));
- QString profileName;
- const QVariantMap::Iterator it = userConfig.find(QLatin1String("qbs.profile"));
- if (it != userConfig.end()) {
- profileName = it.value().toString();
- baseConfig.insert(it.key(), it.value());
- userConfig.erase(it);
- }
+ const QString buildVariantKey = QLatin1String("qbs.buildVariant");
+ const QString profileKey = QLatin1String("qbs.profile");
+ const QString buildVariant = userConfig.take(buildVariantKey).toString();
+ QString profileName = userConfig.take(profileKey).toString();
if (profileName.isEmpty())
profileName = m_settings->defaultProfile();
+ if (profileName.isEmpty())
+ throw ErrorInfo(Tr::tr("No profile specified and no default profile exists."));
const Preferences prefs(m_settings, profileName);
params.setSearchPaths(prefs.searchPaths(qbsRootPath));
params.setPluginPaths(prefs.pluginPaths(qbsRootPath
+ QLatin1String("/" QBS_LIBRARY_DIRNAME)));
+ params.setTopLevelProfile(profileName);
+ params.setBuildVariant(buildVariant);
params.setBuildRoot(buildDirectory(profileName));
- params.setBuildConfiguration(baseConfig);
params.setOverriddenValues(userConfig);
const ErrorInfo err = params.expandBuildConfiguration(m_settings);
if (err.hasError())
@@ -400,9 +397,7 @@ BuildOptions CommandLineFrontend::buildOptions(const Project &project) const
{
BuildOptions options = m_parser.buildOptions();
if (options.maxJobCount() <= 0) {
- const QVariantMap qbsProperties
- = project.projectConfiguration().value(QLatin1String("qbs")).toMap();
- const QString profileName = qbsProperties.value(QLatin1String("profile")).toString();
+ const QString profileName = project.profile();
QBS_CHECK(!profileName.isEmpty());
options.setMaxJobCount(Preferences(m_settings, profileName).jobs());
}