diff options
author | Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> | 2014-10-27 13:00:36 +0100 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> | 2014-10-27 13:00:36 +0100 |
commit | 2eb26c170920d28213b71e549d5dac4663febb14 (patch) | |
tree | 8df5223ac114d758c2112a8fc787992175556418 /qmake/generators | |
parent | 49ddae28e0dcd1c59dd5d742cffedd5290d1224a (diff) | |
parent | 81998b4e8e440076bd22a9164f0a93481c0e597a (diff) |
Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
src/gui/text/qfontdatabase.cpp
Change-Id: I6ac1f55faa22b8e7b591386fb67f0333d0ea443d
Diffstat (limited to 'qmake/generators')
-rw-r--r-- | qmake/generators/win32/msbuild_objectmodel.cpp | 12 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_objectmodel.cpp | 4 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_objectmodel.h | 1 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_vcproj.cpp | 27 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_vcproj.h | 1 |
5 files changed, 37 insertions, 8 deletions
diff --git a/qmake/generators/win32/msbuild_objectmodel.cpp b/qmake/generators/win32/msbuild_objectmodel.cpp index 5acd60edea..f2d55d481d 100644 --- a/qmake/generators/win32/msbuild_objectmodel.cpp +++ b/qmake/generators/win32/msbuild_objectmodel.cpp @@ -474,7 +474,11 @@ void VCXProjectWriter::write(XmlOutput &xml, VCProjectSingleConfig &tool) << attrTag("Condition", condition) << valueTag(tool.Configuration.PrimaryOutput); } - + if (!tool.Configuration.PrimaryOutputExtension.isEmpty()) { + xml<< tag("TargetExt") + << attrTag("Condition", condition) + << valueTag(tool.Configuration.PrimaryOutputExtension); + } if ( tool.Configuration.linker.IgnoreImportLibrary != unset) { xml<< tag("IgnoreImportLibrary") << attrTag("Condition", condition) @@ -696,7 +700,11 @@ void VCXProjectWriter::write(XmlOutput &xml, VCProject &tool) << attrTag("Condition", condition) << valueTag(config.PrimaryOutput); } - + if (!config.PrimaryOutputExtension.isEmpty()) { + xml << tag("TargetExt") + << attrTag("Condition", condition) + << valueTag(config.PrimaryOutputExtension); + } if (config.linker.IgnoreImportLibrary != unset) { xml << tag("IgnoreImportLibrary") << attrTag("Condition", condition) diff --git a/qmake/generators/win32/msvc_objectmodel.cpp b/qmake/generators/win32/msvc_objectmodel.cpp index aa2d40ad77..596170b343 100644 --- a/qmake/generators/win32/msvc_objectmodel.cpp +++ b/qmake/generators/win32/msvc_objectmodel.cpp @@ -2398,7 +2398,11 @@ bool VCFilter::addExtraCompiler(const VCFilterFile &info) if (!CustomBuildTool.Description.isEmpty()) CustomBuildTool.Description += ", "; CustomBuildTool.Description += cmd_name; + // Execute custom build steps in an environment variable scope to prevent unwanted + // side effects for downstream build steps + CustomBuildTool.CommandLine += QLatin1String("setlocal"); CustomBuildTool.CommandLine += VCToolBase::fixCommandLine(cmd.trimmed()); + CustomBuildTool.CommandLine += QLatin1String("endlocal"); int space = cmd.indexOf(' '); QFileInfo finf(cmd.left(space)); if (CustomBuildTool.ToolPath.isEmpty()) diff --git a/qmake/generators/win32/msvc_objectmodel.h b/qmake/generators/win32/msvc_objectmodel.h index 850f5f0f57..4b70ca3d71 100644 --- a/qmake/generators/win32/msvc_objectmodel.h +++ b/qmake/generators/win32/msvc_objectmodel.h @@ -887,6 +887,7 @@ public: QString ConfigurationName; QString OutputDirectory; QString PrimaryOutput; + QString PrimaryOutputExtension; QString ProgramDatabase; QString PlatformToolSet; triState RegisterOutput; diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp index 24421c6c28..9385a50e02 100644 --- a/qmake/generators/win32/msvc_vcproj.cpp +++ b/qmake/generators/win32/msvc_vcproj.cpp @@ -405,6 +405,21 @@ QString VcprojGenerator::retrievePlatformToolSet() const } } +bool VcprojGenerator::isStandardSuffix(const QString &suffix) const +{ + if (!project->values("QMAKE_APP_FLAG").isEmpty()) { + if (suffix.compare("exe", Qt::CaseInsensitive) == 0) + return true; + } else if (project->isActiveConfig("shared")) { + if (suffix.compare("dll", Qt::CaseInsensitive) == 0) + return true; + } else { + if (suffix.compare("lib", Qt::CaseInsensitive) == 0) + return true; + } + return false; +} + ProStringList VcprojGenerator::collectDependencies(QMakeProject *proj, QHash<QString, QString> &projLookup, QHash<QString, QString> &projGuids, QHash<VcsolutionDepend *, QStringList> &extraSubdirs, @@ -993,12 +1008,12 @@ void VcprojGenerator::initConfiguration() if (conf.CompilerVersion >= NET2010) { conf.PlatformToolSet = retrievePlatformToolSet(); - // The target name could have been changed. - conf.PrimaryOutput = project->first("TARGET").toQString(); - if (!conf.PrimaryOutput.isEmpty() && project->first("TEMPLATE") == "vclib" - && project->isActiveConfig("shared")) { - conf.PrimaryOutput.append(project->first("TARGET_VERSION_EXT").toQString()); - } + const QFileInfo targetInfo = fileInfo(project->first("MSVCPROJ_TARGET").toQString()); + conf.PrimaryOutput = targetInfo.completeBaseName(); + + const QString targetSuffix = targetInfo.suffix(); + if (!isStandardSuffix(targetSuffix)) + conf.PrimaryOutputExtension = '.' + targetSuffix; } if (conf.CompilerVersion >= NET2012) { diff --git a/qmake/generators/win32/msvc_vcproj.h b/qmake/generators/win32/msvc_vcproj.h index d15539d25c..f436b6da20 100644 --- a/qmake/generators/win32/msvc_vcproj.h +++ b/qmake/generators/win32/msvc_vcproj.h @@ -137,6 +137,7 @@ private: const ProStringList &allDependencies = ProStringList()); QUuid increaseUUID(const QUuid &id); QString retrievePlatformToolSet() const; + bool isStandardSuffix(const QString &suffix) const; friend class VCFilter; }; |