Autogen: Fix for problematic nested list 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.

Issue: #17570
This commit is contained in:
Sebastian Holtermann 2017-12-18 13:31:57 +01:00 committed by Brad King
parent 166bf4c490
commit 683e9023a7
2 changed files with 4 additions and 1 deletions

View File

@ -248,7 +248,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

@ -171,6 +171,9 @@ bool cmQtAutoGenerators::Run(std::string const& targetDirectory,
snapshot.GetDirectory().SetCurrentSource(targetDirectory);
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());
bool success = false;