summaryrefslogtreecommitdiffstats
path: root/qmake
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@nokia.com>2012-08-07 15:07:50 (GMT)
committerQt by Nokia <qt-info@nokia.com>2012-08-08 11:15:24 (GMT)
commit7de5ab859f75bb4e3ed9b90a37823d5eef91fc2a (patch)
treeb4d5ce1f3a0bfca135474a85a0abba0104f5f966 /qmake
parent9338a26614ce6a50a6c1d30e40dfaceacdfd4912 (diff)
downloadQt-7de5ab859f75bb4e3ed9b90a37823d5eef91fc2a.zip
Qt-7de5ab859f75bb4e3ed9b90a37823d5eef91fc2a.tar.gz
Qt-7de5ab859f75bb4e3ed9b90a37823d5eef91fc2a.tar.bz2
qmake: un-copy-and-pastify vcxproj generator a bit
Reusing already built strings improves readability and performance. Cherry-picked from qt5/qtbase commit b4ae57c881455d791f4587978423c47b046a9a4e Change-Id: I62554ffb9100af47ffb4978d51444a4cbbea7572 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Diffstat (limited to 'qmake')
-rw-r--r--qmake/generators/win32/msbuild_objectmodel.cpp129
-rw-r--r--qmake/generators/win32/msbuild_objectmodel.h1
2 files changed, 70 insertions, 60 deletions
diff --git a/qmake/generators/win32/msbuild_objectmodel.cpp b/qmake/generators/win32/msbuild_objectmodel.cpp
index a732950..c8d6812 100644
--- a/qmake/generators/win32/msbuild_objectmodel.cpp
+++ b/qmake/generators/win32/msbuild_objectmodel.cpp
@@ -413,6 +413,7 @@ void VCXProjectWriter::write(XmlOutput &xml, VCProjectSingleConfig &tool)
xml << import("Project", "$(VCTargetsPath)\\Microsoft.Cpp.Default.props");
write(xml, tool.Configuration);
+ const QString condition = generateCondition(tool.Configuration);
xml << import("Project", "$(VCTargetsPath)\\Microsoft.Cpp.props");
@@ -423,7 +424,7 @@ void VCXProjectWriter::write(XmlOutput &xml, VCProjectSingleConfig &tool)
// PropertySheets
xml << tag("ImportGroup")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(tool.Configuration.Name))
+ << attrTag("Condition", condition)
<< attrTag("Label", "PropertySheets");
xml << tag("Import")
@@ -432,7 +433,6 @@ void VCXProjectWriter::write(XmlOutput &xml, VCProjectSingleConfig &tool)
<< closetag()
<< closetag();
-
// UserMacros
xml << tag("PropertyGroup")
<< attrTag("Label", "UserMacros")
@@ -442,57 +442,57 @@ void VCXProjectWriter::write(XmlOutput &xml, VCProjectSingleConfig &tool)
if ( !tool.Configuration.OutputDirectory.isEmpty() ) {
xml<< tag("OutDir")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(tool.Configuration.Name))
+ << attrTag("Condition", condition)
<< valueTag(tool.Configuration.OutputDirectory);
}
if ( !tool.Configuration.IntermediateDirectory.isEmpty() ) {
xml<< tag("IntDir")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(tool.Configuration.Name))
+ << attrTag("Condition", condition)
<< valueTag(tool.Configuration.IntermediateDirectory);
}
if ( !tool.Configuration.PrimaryOutput.isEmpty() ) {
xml<< tag("TargetName")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(tool.Configuration.Name))
+ << attrTag("Condition", condition)
<< valueTag(tool.Configuration.PrimaryOutput);
}
if ( tool.Configuration.linker.IgnoreImportLibrary != unset) {
xml<< tag("IgnoreImportLibrary")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(tool.Configuration.Name))
+ << attrTag("Condition", condition)
<< valueTagT(tool.Configuration.linker.IgnoreImportLibrary);
}
if ( tool.Configuration.linker.LinkIncremental != linkIncrementalDefault) {
const triState ts = (tool.Configuration.linker.LinkIncremental == linkIncrementalYes ? _True : _False);
xml<< tag("LinkIncremental")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(tool.Configuration.Name))
+ << attrTag("Condition", condition)
<< valueTagT(ts);
}
if ( tool.Configuration.preBuild.ExcludedFromBuild != unset )
{
xml<< tag("PreBuildEventUseInBuild")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(tool.Configuration.Name))
+ << attrTag("Condition", condition)
<< valueTagT(!tool.Configuration.preBuild.ExcludedFromBuild);
}
if ( tool.Configuration.preLink.ExcludedFromBuild != unset )
{
xml<< tag("PreLinkEventUseInBuild")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(tool.Configuration.Name))
+ << attrTag("Condition", condition)
<< valueTagT(!tool.Configuration.preLink.ExcludedFromBuild);
}
if ( tool.Configuration.postBuild.ExcludedFromBuild != unset )
{
xml<< tag("PostBuildEventUseInBuild")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(tool.Configuration.Name))
+ << attrTag("Condition", condition)
<< valueTagT(!tool.Configuration.postBuild.ExcludedFromBuild);
}
xml << closetag();
xml << tag("ItemDefinitionGroup")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(tool.Configuration.Name));
+ << attrTag("Condition", condition);
// ClCompile
write(xml, tool.Configuration.compiler);
@@ -615,7 +615,7 @@ void VCXProjectWriter::write(XmlOutput &xml, VCProject &tool)
// PropertySheets
for (int i = 0; i < tool.SingleProjects.count(); ++i) {
xml << tag("ImportGroup")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(tool.SingleProjects.at(i).Configuration.Name))
+ << attrTag("Condition", generateCondition(tool.SingleProjects.at(i).Configuration))
<< attrTag("Label", "PropertySheets");
xml << tag("Import")
@@ -632,93 +632,97 @@ void VCXProjectWriter::write(XmlOutput &xml, VCProject &tool)
xml << tag("PropertyGroup");
for (int i = 0; i < tool.SingleProjects.count(); ++i) {
+ const VCConfiguration &config = tool.SingleProjects.at(i).Configuration;
+ const QString condition = generateCondition(config);
- if ( !tool.SingleProjects.at(i).Configuration.OutputDirectory.isEmpty() ) {
+ if (!config.OutputDirectory.isEmpty()) {
xml << tag("OutDir")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(tool.SingleProjects.at(i).Configuration.Name))
- << valueTag(tool.SingleProjects.at(i).Configuration.OutputDirectory);
+ << attrTag("Condition", condition)
+ << valueTag(config.OutputDirectory);
}
- if ( !tool.SingleProjects.at(i).Configuration.IntermediateDirectory.isEmpty() ) {
+ if (!config.IntermediateDirectory.isEmpty()) {
xml << tag("IntDir")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(tool.SingleProjects.at(i).Configuration.Name))
- << valueTag(tool.SingleProjects.at(i).Configuration.IntermediateDirectory);
+ << attrTag("Condition", condition)
+ << valueTag(config.IntermediateDirectory);
}
- if ( !tool.SingleProjects.at(i).Configuration.PrimaryOutput.isEmpty() ) {
+ if (!config.PrimaryOutput.isEmpty()) {
xml << tag("TargetName")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(tool.SingleProjects.at(i).Configuration.Name))
- << valueTag(tool.SingleProjects.at(i).Configuration.PrimaryOutput);
+ << attrTag("Condition", condition)
+ << valueTag(config.PrimaryOutput);
}
- if ( tool.SingleProjects.at(i).Configuration.linker.IgnoreImportLibrary != unset) {
+ if (config.linker.IgnoreImportLibrary != unset) {
xml << tag("IgnoreImportLibrary")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(tool.SingleProjects.at(i).Configuration.Name))
- << valueTagT(tool.SingleProjects.at(i).Configuration.linker.IgnoreImportLibrary);
+ << attrTag("Condition", condition)
+ << valueTagT(config.linker.IgnoreImportLibrary);
}
- if ( tool.SingleProjects.at(i).Configuration.linker.LinkIncremental != linkIncrementalDefault) {
- const triState ts = (tool.SingleProjects.at(i).Configuration.linker.LinkIncremental == linkIncrementalYes ? _True : _False);
+ if (config.linker.LinkIncremental != linkIncrementalDefault) {
+ const triState ts = (config.linker.LinkIncremental == linkIncrementalYes ? _True : _False);
xml << tag("LinkIncremental")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(tool.SingleProjects.at(i).Configuration.Name))
+ << attrTag("Condition", condition)
<< valueTagT(ts);
}
- const triState generateManifest = tool.SingleProjects.at(i).Configuration.linker.GenerateManifest;
+ const triState generateManifest = config.linker.GenerateManifest;
if (generateManifest != unset) {
xml << tag("GenerateManifest")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(tool.SingleProjects.at(i).Configuration.Name))
+ << attrTag("Condition", condition)
<< valueTagT(generateManifest);
}
- if ( tool.SingleProjects.at(i).Configuration.preBuild.ExcludedFromBuild != unset )
+ if (config.preBuild.ExcludedFromBuild != unset)
{
xml << tag("PreBuildEventUseInBuild")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(tool.SingleProjects.at(i).Configuration.Name))
- << valueTagT(!tool.SingleProjects.at(i).Configuration.preBuild.ExcludedFromBuild);
+ << attrTag("Condition", condition)
+ << valueTagT(!config.preBuild.ExcludedFromBuild);
}
- if ( tool.SingleProjects.at(i).Configuration.preLink.ExcludedFromBuild != unset )
+ if (config.preLink.ExcludedFromBuild != unset)
{
xml << tag("PreLinkEventUseInBuild")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(tool.SingleProjects.at(i).Configuration.Name))
- << valueTagT(!tool.SingleProjects.at(i).Configuration.preLink.ExcludedFromBuild);
+ << attrTag("Condition", condition)
+ << valueTagT(!config.preLink.ExcludedFromBuild);
}
- if ( tool.SingleProjects.at(i).Configuration.postBuild.ExcludedFromBuild != unset )
+ if (config.postBuild.ExcludedFromBuild != unset)
{
xml << tag("PostBuildEventUseInBuild")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(tool.SingleProjects.at(i).Configuration.Name))
- << valueTagT(!tool.SingleProjects.at(i).Configuration.postBuild.ExcludedFromBuild);
+ << attrTag("Condition", condition)
+ << valueTagT(!config.postBuild.ExcludedFromBuild);
}
}
xml << closetag();
for (int i = 0; i < tool.SingleProjects.count(); ++i) {
+ const VCConfiguration &config = tool.SingleProjects.at(i).Configuration;
+
xml << tag("ItemDefinitionGroup")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(tool.SingleProjects.at(i).Configuration.Name));
+ << attrTag("Condition", generateCondition(config));
// ClCompile
- write(xml, tool.SingleProjects.at(i).Configuration.compiler);
+ write(xml, config.compiler);
// Link
- write(xml, tool.SingleProjects.at(i).Configuration.linker);
+ write(xml, config.linker);
// Midl
- write(xml, tool.SingleProjects.at(i).Configuration.idl);
+ write(xml, config.idl);
// ResourceCompiler
- write(xml, tool.SingleProjects.at(i).Configuration.resource);
+ write(xml, config.resource);
// Post build event
- if ( tool.SingleProjects.at(i).Configuration.postBuild.ExcludedFromBuild != unset )
- write(xml, tool.SingleProjects.at(i).Configuration.postBuild);
+ if (config.postBuild.ExcludedFromBuild != unset)
+ write(xml, config.postBuild);
// Pre build event
- if ( tool.SingleProjects.at(i).Configuration.preBuild.ExcludedFromBuild != unset )
- write(xml, tool.SingleProjects.at(i).Configuration.preBuild);
+ if (config.preBuild.ExcludedFromBuild != unset)
+ write(xml, config.preBuild);
// Pre link event
- if ( tool.SingleProjects.at(i).Configuration.preLink.ExcludedFromBuild != unset )
- write(xml, tool.SingleProjects.at(i).Configuration.preLink);
+ if (config.preLink.ExcludedFromBuild != unset)
+ write(xml, config.preLink);
xml << closetag();
}
@@ -1458,33 +1462,33 @@ void VCXProjectWriter::write(XmlOutput &xml, const VCMIDLTool &tool)
void VCXProjectWriter::write(XmlOutput &xml, const VCCustomBuildTool &tool)
{
- const QString &configName = tool.config->Name;
+ const QString condition = generateCondition(*tool.config);
if ( !tool.AdditionalDependencies.isEmpty() )
{
xml << tag("AdditionalInputs")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(configName))
+ << attrTag("Condition", condition)
<< valueTagDefX(tool.AdditionalDependencies, "AdditionalInputs", ";");
}
if( !tool.CommandLine.isEmpty() )
{
xml << tag("Command")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(configName))
+ << attrTag("Condition", condition)
<< valueTag(tool.CommandLine.join(vcxCommandSeparator()));
}
if ( !tool.Description.isEmpty() )
{
xml << tag("Message")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(configName))
+ << attrTag("Condition", condition)
<< valueTag(tool.Description);
}
if ( !tool.Outputs.isEmpty() )
{
xml << tag("Outputs")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(configName))
+ << attrTag("Condition", condition)
<< valueTagDefX(tool.Outputs, "Outputs", ";");
}
}
@@ -1552,7 +1556,7 @@ void VCXProjectWriter::write(XmlOutput &xml, const VCDeploymentTool &tool)
void VCXProjectWriter::write(XmlOutput &xml, const VCConfiguration &tool)
{
xml << tag("PropertyGroup")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(tool.Name))
+ << attrTag("Condition", generateCondition(tool))
<< attrTag("Label", "Configuration")
<< attrTagS(_OutputDirectory, tool.OutputDirectory)
<< attrTagT(_ATLMinimizesCRunTimeLibraryUsage, tool.ATLMinimizesCRunTimeLibraryUsage)
@@ -1920,10 +1924,10 @@ bool VCXProjectWriter::outputFileConfig(VCFilter &filter, XmlOutput &xml, XmlOut
}
}
+ const QString condition = generateCondition(*filter.Config);
if(!inBuild) {
-
xml << tag("ExcludedFromBuild")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(filter.Config->Name))
+ << attrTag("Condition", condition)
<< valueTag("true");
}
@@ -1931,17 +1935,17 @@ bool VCXProjectWriter::outputFileConfig(VCFilter &filter, XmlOutput &xml, XmlOut
if ( !filter.CompilerTool.ForcedIncludeFiles.isEmpty() ) {
xml << tag("ForcedIncludeFiles")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(filter.Config->Name))
+ << attrTag("Condition", condition)
<< valueTagX(filter.CompilerTool.ForcedIncludeFiles);
}
if ( !filter.CompilerTool.PrecompiledHeaderThrough.isEmpty() ) {
xml << tag("PrecompiledHeaderFile")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(filter.Config->Name))
+ << attrTag("Condition", condition)
<< valueTag(filter.CompilerTool.PrecompiledHeaderThrough)
<< tag("PrecompiledHeader")
- << attrTag("Condition", QString("'$(Configuration)|$(Platform)'=='%1'").arg(filter.Config->Name))
+ << attrTag("Condition", condition)
<< valueTag(toString(filter.CompilerTool.UsePrecompiledHeader));
}
}
@@ -1950,4 +1954,9 @@ bool VCXProjectWriter::outputFileConfig(VCFilter &filter, XmlOutput &xml, XmlOut
return fileAdded;
}
+QString VCXProjectWriter::generateCondition(const VCConfiguration &config)
+{
+ return QLatin1String("'$(Configuration)|$(Platform)'=='") + config.Name + QLatin1Char('\'');
+}
+
QT_END_NAMESPACE
diff --git a/qmake/generators/win32/msbuild_objectmodel.h b/qmake/generators/win32/msbuild_objectmodel.h
index 72a405f..f53b2f9 100644
--- a/qmake/generators/win32/msbuild_objectmodel.h
+++ b/qmake/generators/win32/msbuild_objectmodel.h
@@ -182,6 +182,7 @@ private:
static void outputFilter(VCProject &project, XmlOutput &xml, XmlOutput &xmlFilter, const QString &filtername);
static void outputFileConfigs(VCProject &project, XmlOutput &xml, XmlOutput &xmlFilter, const VCFilterFile &info, const QString &filtername);
static bool outputFileConfig(VCFilter &filter, XmlOutput &xml, XmlOutput &xmlFilter, const QString &filename, const QString &filtername, bool fileAllreadyAdded);
+ static QString generateCondition(const VCConfiguration &config);
friend class XTreeNode;
friend class XFlatNode;