CMakePM: Do not modify container in loop

Amends 2f77dc3415

Change-Id: Ida99d5c83eb1b30865b90d83583244728efb38a7
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Cristian Adam
2022-03-02 14:29:15 +01:00
parent 9735049e2c
commit 8c00c4c34e

View File

@@ -1738,14 +1738,14 @@ const QStringList InitialCMakeArgumentsAspect::allValues() const
void InitialCMakeArgumentsAspect::setAllValues(const QString &values, QStringList &additionalOptions) void InitialCMakeArgumentsAspect::setAllValues(const QString &values, QStringList &additionalOptions)
{ {
QStringList arguments = values.split('\n', Qt::SkipEmptyParts); QStringList arguments = values.split('\n', Qt::SkipEmptyParts);
QString cmakeGenerator;
for (QString &arg: arguments) { for (QString &arg: arguments) {
if (arg.startsWith("-G")) { if (arg.startsWith("-G")) {
const QString strDash(" - "); const QString strDash(" - ");
const int idxDash = arg.indexOf(strDash); const int idxDash = arg.indexOf(strDash);
if (idxDash > 0) { if (idxDash > 0) {
// -GCodeBlocks - Ninja // -GCodeBlocks - Ninja
QString generator = "-DCMAKE_GENERATOR:STRING=" + arg.mid(idxDash + strDash.length()); cmakeGenerator = "-DCMAKE_GENERATOR:STRING=" + arg.mid(idxDash + strDash.length());
arguments.append(generator);
arg = arg.left(idxDash); arg = arg.left(idxDash);
arg.replace("-G", "-DCMAKE_EXTRA_GENERATOR:STRING="); arg.replace("-G", "-DCMAKE_EXTRA_GENERATOR:STRING=");
@@ -1760,6 +1760,9 @@ void InitialCMakeArgumentsAspect::setAllValues(const QString &values, QStringLis
if (arg.startsWith("-T")) if (arg.startsWith("-T"))
arg.replace("-T", "-DCMAKE_GENERATOR_TOOLSET:STRING="); arg.replace("-T", "-DCMAKE_GENERATOR_TOOLSET:STRING=");
} }
if (!cmakeGenerator.isEmpty())
arguments.append(cmakeGenerator);
m_cmakeConfiguration = CMakeConfig::fromArguments(arguments, additionalOptions); m_cmakeConfiguration = CMakeConfig::fromArguments(arguments, additionalOptions);
for (CMakeConfigItem &ci : m_cmakeConfiguration) for (CMakeConfigItem &ci : m_cmakeConfiguration)
ci.isInitial = true; ci.isInitial = true;