Browse Source

Autogen: Optimize cmake_autogen execution for CROSS_CONFIG usage

The redundant `cmake_autogen` process execution was optimized for
non-`CROSS_CONFIGS` usage. It was executed three times for each
config although only one of them is needed.
pull/365/head
Orkun Tokdemir 2 years ago
parent
commit
3bd605f3d0
  1. 20
      Source/cmQtAutoGenInitializer.cxx

20
Source/cmQtAutoGenInitializer.cxx

@ -1168,7 +1168,8 @@ bool cmQtAutoGenInitializer::InitAutogenTarget()
if (this->Moc.Enabled) {
this->AddGeneratedSource(this->Moc.CompilationFile, this->Moc, true);
if (useNinjaDepfile) {
if (this->MultiConfig) {
if (this->MultiConfig &&
!this->Makefile->GetSafeDefinition("CMAKE_CROSS_CONFIGS").empty()) {
// Make all mocs_compilation_<CONFIG>.cpp files byproducts of the
// ${target}_autogen/timestamp custom command.
// We cannot just use Moc.CompilationFileGenex here, because that
@ -1215,10 +1216,23 @@ bool cmQtAutoGenInitializer::InitAutogenTarget()
this->GlobalGen->GetQtAutoGenConfigs(configs);
bool constexpr stdPipesUTF8 = true;
cmCustomCommandLines commandLines;
for (auto const& config : configs) {
if (this->Makefile->GetSafeDefinition("CMAKE_CROSS_CONFIGS").empty()) {
std::string autugenInfoFileconfig;
if (this->MultiConfig) {
autugenInfoFileconfig = "$<CONFIG>";
} else {
autugenInfoFileconfig = configs[0];
}
commandLines.push_back(cmMakeCommandLine(
{ cmSystemTools::GetCMakeCommand(), "-E", "cmake_autogen",
this->AutogenTarget.InfoFile, config }));
this->AutogenTarget.InfoFile, autugenInfoFileconfig }));
} else {
for (auto const& config : configs) {
commandLines.push_back(cmMakeCommandLine(
{ cmSystemTools::GetCMakeCommand(), "-E", "cmake_autogen",
this->AutogenTarget.InfoFile, config }));
}
}
// Use PRE_BUILD on demand

Loading…
Cancel
Save