diff options
author | Miguel Costa <miguel.costa@qt.io> | 2020-01-28 17:14:34 +0100 |
---|---|---|
committer | Miguel Costa <miguel.costa@qt.io> | 2020-03-09 11:42:26 +0000 |
commit | 22c67fa2253e386ea25a61aa018629040d6bf1f5 (patch) | |
tree | e7b50b28d5f199897717e2e66576dce423fb3db2 /src/qtprojectlib/MsBuildProject.cs | |
parent | 6cfad4728f804130730f165cd293f92c48bce70f (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.cs | 16 |
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()) |