From 41685c8ba0902cff1241886d966e796cecb82ae3 Mon Sep 17 00:00:00 2001 From: Sebastian Holtermann Date: Wed, 30 May 2018 17:23:23 +0200 Subject: Autogen: Let AUTORCC generate output for all configurations For multi configuration generators let AUTORCC generate the rcc output for all configurations. This is a workaround for the incomplete `$` support in the DEPENDS and OUTPUT clauses of a custom_command/custom_target. Since we can't depend on the per-config rcc output file we somehow must ensure the successful rcc build for one configuration doesn't shadow the need to rcc rebuild for a second configuration. Closes #18006 --- Source/cmQtAutoGenInitializer.cxx | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/Source/cmQtAutoGenInitializer.cxx b/Source/cmQtAutoGenInitializer.cxx index 59f4eb8..d59f3a7 100644 --- a/Source/cmQtAutoGenInitializer.cxx +++ b/Source/cmQtAutoGenInitializer.cxx @@ -628,14 +628,26 @@ void cmQtAutoGenInitializer::InitCustomTargets() std::vector ccOutput; ccOutput.push_back(qrc.RccFile); + cmCustomCommandLines commandLines; - { + if (this->MultiConfig) { + // Build for all configurations + for (std::string const& config : this->ConfigsList) { + cmCustomCommandLine currentLine; + currentLine.push_back(cmSystemTools::GetCMakeCommand()); + currentLine.push_back("-E"); + currentLine.push_back("cmake_autorcc"); + currentLine.push_back(qrc.InfoFile); + currentLine.push_back(config); + commandLines.push_back(std::move(currentLine)); + } + } else { cmCustomCommandLine currentLine; currentLine.push_back(cmSystemTools::GetCMakeCommand()); currentLine.push_back("-E"); currentLine.push_back("cmake_autorcc"); currentLine.push_back(qrc.InfoFile); - currentLine.push_back("$"); + currentLine.push_back("$"); commandLines.push_back(std::move(currentLine)); } std::string ccComment = "Automatic RCC for "; -- cgit v0.12