aboutsummaryrefslogtreecommitdiffstats
path: root/src/qtprojectlib/MsBuildProject.cs
diff options
context:
space:
mode:
authorMiguel Costa <miguel.costa@qt.io>2020-01-28 17:14:34 +0100
committerMiguel Costa <miguel.costa@qt.io>2020-03-09 11:42:26 +0000
commit22c67fa2253e386ea25a61aa018629040d6bf1f5 (patch)
treee7b50b28d5f199897717e2e66576dce423fb3db2 /src/qtprojectlib/MsBuildProject.cs
parent6cfad4728f804130730f165cd293f92c48bce70f (diff)
Avoid replacing file name parts in .pro import
In the import procedure of qmake projects, when transforming custom build command lines to use VS macros instead of fixed values, ensure that parts of filenames are not replaced with $(Configuration) or any other macro. This is achieved by transforming file name references (e.g. ui_foo.h --> ui_%(Filename).h ) before replacing configuration and platform names. Task-number: QTVSADDINBUG-732 Change-Id: Ic6a56cae8d240b58bfc45da7de7b3479631249a9 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'src/qtprojectlib/MsBuildProject.cs')
-rw-r--r--src/qtprojectlib/MsBuildProject.cs16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/qtprojectlib/MsBuildProject.cs b/src/qtprojectlib/MsBuildProject.cs
index 8e50b74e..70aafd16 100644
--- a/src/qtprojectlib/MsBuildProject.cs
+++ b/src/qtprojectlib/MsBuildProject.cs
@@ -879,15 +879,25 @@ namespace QtProjectLib
new XAttribute("ConfigName", configId)));
var configName = (string)row.config.Element(ns + "Configuration");
var platformName = (string)row.config.Element(ns + "Platform");
+
+ ///////////////////////////////////////////////////////////////////////////////
+ // Replace fixed values with VS macros
+ //
+ // * Filename, e.g. foo.ui --> %(Filename)%(Extension)
var commandLine = row.command.Value
.Replace(Path.GetFileName(row.itemName), "%(Filename)%(Extension)",
- StringComparison.InvariantCultureIgnoreCase)
+ StringComparison.InvariantCultureIgnoreCase);
+ //
+ // * Context specific, e.g. ui_foo.h --> ui_%(FileName).h
+ foreach (var replace in extraReplacements)
+ commandLine = replace(row.itemName, commandLine);
+ //
+ // * Configuration/platform, e.g. x64\Debug --> $(Platform)\$(Configuration)
+ commandLine = commandLine
.Replace(configName, "$(Configuration)",
StringComparison.InvariantCultureIgnoreCase)
.Replace(platformName, "$(Platform)",
StringComparison.InvariantCultureIgnoreCase);
- foreach (var replace in extraReplacements)
- commandLine = replace(row.itemName, commandLine);
evaluator.Properties.Clear();
foreach (var configProp in row.config.Elements())