CMakePM: Use cleaned paths for CMake parameter values

FilePath::fromUserInput will "clean" the paths, which on Windows means
that \\ will be replaced by /.

This is how CMake treats the paths internally as CMake paths.

This fixes the %{buildDir} macro which will expand to \\ on Windows.
Which causes issues with qtcsettings.cmake.

This way the expanded value of CMAKE_PROJECT_INCLUDE_BEFORE is not
displayed as red on Windows in the "Current Configuration" settings
page.

Change-Id: Ic26bf437de41ff3fb1c1b98d304ae84512cb0f1a
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Cristian Adam
2023-02-28 19:43:15 +01:00
parent b80546c1d9
commit 6a41e33908
3 changed files with 21 additions and 6 deletions

View File

@@ -101,6 +101,11 @@ CMakeConfigItem ConfigModel::DataItem::toCMakeConfigItem() const
return cmi;
}
QString ConfigModel::DataItem::expandedValue(Utils::MacroExpander *expander)
{
return toCMakeConfigItem().expandedValue(expander);
}
// ConfigModel
ConfigModel::ConfigModel(QObject *parent) : Utils::TreeModel<>(parent)
@@ -165,7 +170,7 @@ void ConfigModel::appendConfiguration(const QString &key,
if (m_kitConfiguration.contains(key))
internalItem.kitValue = QString::fromUtf8(
isInitial ? m_kitConfiguration.value(key).value
: m_macroExpander->expand(m_kitConfiguration.value(key).value));
: m_kitConfiguration.value(key).expandedValue(m_macroExpander).toUtf8());
m_configuration.append(internalItem);
setConfiguration(m_configuration);
}
@@ -504,7 +509,7 @@ void ConfigModel::generateTree()
for (InternalDataItem &di : m_configuration) {
auto it = initialHash.find(di.key);
if (it != initialHash.end())
di.initialValue = macroExpander()->expand(it->value);
di.initialValue = it->expandedValue(macroExpander());
root->appendChild(new Internal::ConfigModelTreeItem(&di));
}