Autogen: Fix for problematic nested lists separator

In the AutogenInfo.cmake file the separator for nested lists
was `@LSEP@` which led to a speed regression because the `@`
character triggered an (unsuccessful) expression evaluation.

By setting the policy version of the CMake instance in the
`_autogen` target to 3.9, the OLD `@` evaluating behavior
controlled by policy CMP0053 is disabled.

Also the nested lists separator string is changed to `<<<S>>>`,
which solves the problem twofold.

Closes #17570
This commit is contained in:
Sebastian Holtermann 2017-12-18 14:36:17 +01:00
parent 438ed3bfc1
commit 3ce7eecedc
2 changed files with 4 additions and 1 deletions

View File

@ -233,7 +233,7 @@ static bool RccListInputsQt5(std::string const& rccCommand,
// - Class definitions
std::string const cmQtAutoGen::listSep = "@LSEP@";
std::string const cmQtAutoGen::listSep = "<<<S>>>";
std::string const& cmQtAutoGen::GeneratorName(Generator type)
{

View File

@ -78,6 +78,9 @@ bool cmQtAutoGenerator::Run(std::string const& infoFile,
snapshot.GetDirectory().SetCurrentSource(this->InfoDir);
auto makefile = cm::make_unique<cmMakefile>(&gg, snapshot);
// The OLD/WARN behavior for policy CMP0053 caused a speed regression.
// https://gitlab.kitware.com/cmake/cmake/issues/17570
makefile->SetPolicyVersion("3.9");
gg.SetCurrentMakefile(makefile.get());
return this->Process(makefile.get());