mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-05 21:31:08 -06:00
Autogen: Fallback on internal qrc parser when RCC isn't built yet
When building a Qt project, the AUTORCC functionality, by default, uses the rcc binary to get the contents of a qrc file for dependency information. This is done at CMake "generate" time. The problem is that while configuring Qt itself, the rcc binary is not built yet. In that case, to get the contents of the qrc file, fall back to the code branch which uses an ifstream instead of the rcc binary.
This commit is contained in:
@@ -594,7 +594,7 @@ bool cmQtAutoGenInitializer::InitRcc()
|
||||
if (this->QtVersion.Major == 5 || this->QtVersion.Major == 6) {
|
||||
if (stdOut.find("--list") != std::string::npos) {
|
||||
this->Rcc.ListOptions.emplace_back("--list");
|
||||
} else {
|
||||
} else if (stdOut.find("-list") != std::string::npos) {
|
||||
this->Rcc.ListOptions.emplace_back("-list");
|
||||
}
|
||||
}
|
||||
@@ -1581,6 +1581,10 @@ bool cmQtAutoGenInitializer::GetQtExecutable(GenVarsT& genVars,
|
||||
print_err(prop + " evaluates to an empty value");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check if the provided executable already exists (it's possible for it
|
||||
// not to exist when building Qt itself).
|
||||
genVars.ExecutableExists = cmSystemTools::FileExists(genVars.Executable);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -1630,6 +1634,7 @@ bool cmQtAutoGenInitializer::GetQtExecutable(GenVarsT& genVars,
|
||||
print_err(err);
|
||||
return false;
|
||||
}
|
||||
genVars.ExecutableExists = true;
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -1648,7 +1653,7 @@ bool cmQtAutoGenInitializer::RccListInputs(std::string const& fileName,
|
||||
error += "\n";
|
||||
return false;
|
||||
}
|
||||
if (!this->Rcc.ListOptions.empty()) {
|
||||
if (this->Rcc.ExecutableExists && !this->Rcc.ListOptions.empty()) {
|
||||
// Use rcc for file listing
|
||||
if (this->Rcc.Executable.empty()) {
|
||||
error = "rcc executable not available";
|
||||
|
||||
@@ -68,6 +68,7 @@ public:
|
||||
std::string ExecutableTargetName;
|
||||
cmGeneratorTarget* ExecutableTarget = nullptr;
|
||||
std::string Executable;
|
||||
bool ExecutableExists = false;
|
||||
|
||||
/// @brief Constructor
|
||||
GenVarsT(GenT gen, std::string const& genName,
|
||||
|
||||
Reference in New Issue
Block a user