aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis Shienkov <denis.shienkov@gmail.com>2017-01-31 12:57:34 +0300
committerJake Petroules <jake.petroules@qt.io>2017-02-08 11:13:29 +0000
commitf9555c3103b5da16b84a315b97826e3f2e2d1a38 (patch)
tree9df1f874e03fb8c8808c61f506bce890a7e812cb
parent152e5149e342befb47ba5ad47764be512dd17998 (diff)
Replicate '--settings-dir' option to Visual Studio generator
Task-number: QBS-1077 Change-Id: Ib20d8d8242f8b51ba353968e39cedb8945a86331 Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r--src/app/qbs/commandlinefrontend.cpp3
-rw-r--r--src/lib/corelib/generators/generator.cpp10
-rw-r--r--src/lib/corelib/generators/generator.h4
-rw-r--r--src/lib/corelib/generators/visualstudio/msbuildsharedsolutionpropertiesproject.cpp32
-rw-r--r--src/lib/corelib/generators/visualstudio/msbuildsharedsolutionpropertiesproject.h2
-rw-r--r--src/lib/corelib/generators/visualstudio/msbuildsolutionpropertiesproject.cpp9
-rw-r--r--src/lib/corelib/generators/visualstudio/msbuildsolutionpropertiesproject.h3
-rw-r--r--src/lib/corelib/generators/visualstudio/visualstudiogenerator.cpp6
8 files changed, 52 insertions, 17 deletions
diff --git a/src/app/qbs/commandlinefrontend.cpp b/src/app/qbs/commandlinefrontend.cpp
index 0b712df1e..835b29536 100644
--- a/src/app/qbs/commandlinefrontend.cpp
+++ b/src/app/qbs/commandlinefrontend.cpp
@@ -508,7 +508,8 @@ void CommandLineFrontend::generate()
generator->generate(m_projects,
m_parser.buildConfigurations(),
- m_parser.installOptions(QString()));
+ m_parser.installOptions(QString()),
+ m_parser.settingsDir());
}
int CommandLineFrontend::runTarget()
diff --git a/src/lib/corelib/generators/generator.cpp b/src/lib/corelib/generators/generator.cpp
index 4f422ed0e..22abf5b6f 100644
--- a/src/lib/corelib/generators/generator.cpp
+++ b/src/lib/corelib/generators/generator.cpp
@@ -51,6 +51,7 @@ public:
QList<Project> projects;
QList<QVariantMap> buildConfigurations;
InstallOptions installOptions;
+ QString qbsSettingsDir;
};
ProjectGenerator::ProjectGenerator()
@@ -77,7 +78,8 @@ static QString _configurationName(const QVariantMap &buildConfiguration)
void ProjectGenerator::generate(const QList<Project> &projects,
const QList<QVariantMap> &buildConfigurations,
- const InstallOptions &installOptions)
+ const InstallOptions &installOptions,
+ const QString &qbsSettingsDir)
{
d->projects = projects;
std::sort(d->projects.begin(), d->projects.end(),
@@ -88,6 +90,7 @@ void ProjectGenerator::generate(const QList<Project> &projects,
[](const QVariantMap &a, const QVariantMap &b) {
return _configurationName(a) < _configurationName(b); });
d->installOptions = installOptions;
+ d->qbsSettingsDir = qbsSettingsDir;
generate();
}
@@ -225,4 +228,9 @@ QFileInfo ProjectGenerator::qbsExecutableFilePath() const
return file;
}
+QString ProjectGenerator::qbsSettingsDir() const
+{
+ return d->qbsSettingsDir;
+}
+
} // namespace qbs
diff --git a/src/lib/corelib/generators/generator.h b/src/lib/corelib/generators/generator.h
index 366627800..8cd77b37b 100644
--- a/src/lib/corelib/generators/generator.h
+++ b/src/lib/corelib/generators/generator.h
@@ -70,10 +70,12 @@ public:
void generate(const QList<Project> &projects,
const QList<QVariantMap> &buildConfigurations,
- const InstallOptions &installOptions);
+ const InstallOptions &installOptions,
+ const QString &qbsSettingsDir);
const GeneratableProject project() const;
QFileInfo qbsExecutableFilePath() const;
+ QString qbsSettingsDir() const;
private:
QList<Project> projects() const;
diff --git a/src/lib/corelib/generators/visualstudio/msbuildsharedsolutionpropertiesproject.cpp b/src/lib/corelib/generators/visualstudio/msbuildsharedsolutionpropertiesproject.cpp
index 6c47007b2..0ec4b8366 100644
--- a/src/lib/corelib/generators/visualstudio/msbuildsharedsolutionpropertiesproject.cpp
+++ b/src/lib/corelib/generators/visualstudio/msbuildsharedsolutionpropertiesproject.cpp
@@ -39,9 +39,10 @@
namespace qbs {
-QString qbsCommandLine(const GeneratableProject &project,
- const QString &subCommand,
- const Internal::VisualStudioVersionInfo &versionInfo)
+static QString qbsCommandLine(const GeneratableProject &project,
+ const QString &subCommand,
+ const QString &qbsSettingsDir,
+ const Internal::VisualStudioVersionInfo &versionInfo)
{
auto addEnvironmentVariableArgument = [&](Internal::CommandLine &cl, const QString &var) {
cl.appendRawArgument(QStringLiteral("\"$(%1)\"").arg(var));
@@ -51,11 +52,19 @@ QString qbsCommandLine(const GeneratableProject &project,
if (subCommand == QStringLiteral("rebuild"))
realSubCommand = QStringLiteral("build");
- // "path/to/qbs.exe" {build|clean} -f "path/to/project.qbs" -d "/build/directory/"
+ // "path/to/qbs.exe" {build|clean}
+ // --settings-dir "path/to/settings/directory/"
+ // -f "path/to/project.qbs" -d "/build/directory/"
// -p product_name [[configuration key:value]...]
Internal::CommandLine commandLine;
commandLine.setProgram(QStringLiteral("\"$(QbsExecutablePath)\""), true);
commandLine.appendArgument(realSubCommand);
+
+ if (!qbsSettingsDir.isEmpty()) {
+ commandLine.appendArgument(QStringLiteral("--settings-dir"));
+ addEnvironmentVariableArgument(commandLine, QStringLiteral("QbsSettingsDir"));
+ }
+
commandLine.appendArgument(QStringLiteral("-f"));
addEnvironmentVariableArgument(commandLine, QStringLiteral("QbsProjectFile"));
commandLine.appendArgument(QStringLiteral("-d"));
@@ -91,7 +100,8 @@ QString qbsCommandLine(const GeneratableProject &project,
MSBuildSharedSolutionPropertiesProject::MSBuildSharedSolutionPropertiesProject(
const Internal::VisualStudioVersionInfo &versionInfo,
const GeneratableProject &project,
- const QFileInfo &qbsExecutable)
+ const QFileInfo &qbsExecutable,
+ const QString &qbsSettingsDir)
{
setDefaultTargets(QStringLiteral("Build"));
setToolsVersion(versionInfo.toolsVersion());
@@ -123,13 +133,17 @@ MSBuildSharedSolutionPropertiesProject::MSBuildSharedSolutionPropertiesProject(
QStringLiteral("$(SolutionDir)."));
group->appendProperty(QStringLiteral("QbsBuildCommandLine"),
- qbsCommandLine(project, QStringLiteral("build"), versionInfo));
+ qbsCommandLine(project, QStringLiteral("build"),
+ qbsSettingsDir, versionInfo));
group->appendProperty(QStringLiteral("QbsReBuildCommandLine"),
- qbsCommandLine(project, QStringLiteral("rebuild"), versionInfo));
+ qbsCommandLine(project, QStringLiteral("rebuild"),
+ qbsSettingsDir, versionInfo));
group->appendProperty(QStringLiteral("QbsCleanCommandLine"),
- qbsCommandLine(project, QStringLiteral("clean"), versionInfo));
+ qbsCommandLine(project, QStringLiteral("clean"),
+ qbsSettingsDir, versionInfo));
group->appendProperty(QStringLiteral("QbsGenerateCommandLine"),
- qbsCommandLine(project, QStringLiteral("generate"), versionInfo));
+ qbsCommandLine(project, QStringLiteral("generate"),
+ qbsSettingsDir, versionInfo));
}
} // namespace qbs
diff --git a/src/lib/corelib/generators/visualstudio/msbuildsharedsolutionpropertiesproject.h b/src/lib/corelib/generators/visualstudio/msbuildsharedsolutionpropertiesproject.h
index 5b8b62750..f3848ce24 100644
--- a/src/lib/corelib/generators/visualstudio/msbuildsharedsolutionpropertiesproject.h
+++ b/src/lib/corelib/generators/visualstudio/msbuildsharedsolutionpropertiesproject.h
@@ -45,7 +45,7 @@ class MSBuildSharedSolutionPropertiesProject : public MSBuildProject
public:
MSBuildSharedSolutionPropertiesProject(const Internal::VisualStudioVersionInfo &versionInfo,
const GeneratableProject &project,
- const QFileInfo &qbsExecutable);
+ const QFileInfo &qbsExecutable, const QString &qbsSettingsDir);
};
} // namespace qbs
diff --git a/src/lib/corelib/generators/visualstudio/msbuildsolutionpropertiesproject.cpp b/src/lib/corelib/generators/visualstudio/msbuildsolutionpropertiesproject.cpp
index 5cc1eb633..ed4fd6335 100644
--- a/src/lib/corelib/generators/visualstudio/msbuildsolutionpropertiesproject.cpp
+++ b/src/lib/corelib/generators/visualstudio/msbuildsolutionpropertiesproject.cpp
@@ -41,7 +41,8 @@ namespace qbs {
MSBuildSolutionPropertiesProject::MSBuildSolutionPropertiesProject(
const Internal::VisualStudioVersionInfo &versionInfo,
const GeneratableProject &project,
- const QFileInfo &qbsExecutable)
+ const QFileInfo &qbsExecutable,
+ const QString &qbsSettingsDir)
{
setDefaultTargets(QStringLiteral("Build"));
setToolsVersion(versionInfo.toolsVersion());
@@ -57,6 +58,12 @@ MSBuildSolutionPropertiesProject::MSBuildSolutionPropertiesProject(
group->appendProperty(QStringLiteral("QbsProjectDir"),
Internal::PathUtils::toNativeSeparators(project.filePath().path(), win)
+ Internal::HostOsInfo::pathSeparator(win));
+
+ if (!qbsSettingsDir.isEmpty()) {
+ group->appendProperty(QStringLiteral("QbsSettingsDir"),
+ Internal::PathUtils::toNativeSeparators(qbsSettingsDir, win)
+ + Internal::HostOsInfo::pathSeparator(win) + QLatin1Char('.'));
+ }
}
} // namespace qbs
diff --git a/src/lib/corelib/generators/visualstudio/msbuildsolutionpropertiesproject.h b/src/lib/corelib/generators/visualstudio/msbuildsolutionpropertiesproject.h
index 6e70ed464..7da069343 100644
--- a/src/lib/corelib/generators/visualstudio/msbuildsolutionpropertiesproject.h
+++ b/src/lib/corelib/generators/visualstudio/msbuildsolutionpropertiesproject.h
@@ -47,7 +47,8 @@ class MSBuildSolutionPropertiesProject : public MSBuildProject
public:
MSBuildSolutionPropertiesProject(const Internal::VisualStudioVersionInfo &versionInfo,
const GeneratableProject &project,
- const QFileInfo &qbsExecutable);
+ const QFileInfo &qbsExecutable,
+ const QString &qbsSettingsDir);
};
} // namespace qbs
diff --git a/src/lib/corelib/generators/visualstudio/visualstudiogenerator.cpp b/src/lib/corelib/generators/visualstudio/visualstudiogenerator.cpp
index dd2f66e05..8366f2d17 100644
--- a/src/lib/corelib/generators/visualstudio/visualstudiogenerator.cpp
+++ b/src/lib/corelib/generators/visualstudio/visualstudiogenerator.cpp
@@ -172,7 +172,8 @@ void VisualStudioGenerator::addPropertySheets(const GeneratableProject &project)
d->propertySheetNames.append({ fileName, true });
d->msbuildProjects.insert(project.baseBuildDirectory().absoluteFilePath(fileName),
QSharedPointer<MSBuildSolutionPropertiesProject>::create(
- d->versionInfo, project, qbsExecutableFilePath()));
+ d->versionInfo, project,
+ qbsExecutableFilePath(), qbsSettingsDir()));
}
{
@@ -180,7 +181,8 @@ void VisualStudioGenerator::addPropertySheets(const GeneratableProject &project)
d->propertySheetNames.append({ fileName, false });
d->msbuildProjects.insert(project.baseBuildDirectory().absoluteFilePath(fileName),
QSharedPointer<MSBuildSharedSolutionPropertiesProject>::create(
- d->versionInfo, project, qbsExecutableFilePath()));
+ d->versionInfo, project,
+ qbsExecutableFilePath(), qbsSettingsDir()));
}
}