mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-06 05:40:54 -06:00
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.
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user