QtAutogen: Extract a GetRccExecutable method.

This commit is contained in:
Stephen Kelly 2014-09-23 00:54:08 +02:00
parent b2a7f60a46
commit 506151af51
2 changed files with 33 additions and 9 deletions

View File

@ -935,6 +935,29 @@ void cmQtAutoGenerators::SetupAutoRccTarget(cmTarget const* target)
makefile->AddDefinition("_qt_rcc_options_options",
cmLocalGenerator::EscapeForCMake(rccFileOptions).c_str());
makefile->AddDefinition("_qt_rcc_executable",
this->GetRccExecutable(target).c_str());
}
std::string cmQtAutoGenerators::GetRccExecutable(cmTarget const* target)
{
cmMakefile *makefile = target->GetMakefile();
const char *qtVersion = makefile->GetDefinition("_target_qt_version");
if (!qtVersion)
{
qtVersion = makefile->GetDefinition("Qt5Core_VERSION_MAJOR");
if (!qtVersion)
{
qtVersion = makefile->GetDefinition("QT_VERSION_MAJOR");
}
if (const char *targetQtVersion =
target->GetLinkInterfaceDependentStringProperty("QT_MAJOR_VERSION",
""))
{
qtVersion = targetQtVersion;
}
}
std::string targetName = target->GetName();
if (strcmp(qtVersion, "5") == 0)
{
@ -943,9 +966,9 @@ void cmQtAutoGenerators::SetupAutoRccTarget(cmTarget const* target)
{
cmSystemTools::Error("Qt5::rcc target not found ",
targetName.c_str());
return;
return std::string();
}
makefile->AddDefinition("_qt_rcc_executable", qt5Rcc->GetLocation(""));
return qt5Rcc->GetLocation("");
}
else if (strcmp(qtVersion, "4") == 0)
{
@ -954,15 +977,14 @@ void cmQtAutoGenerators::SetupAutoRccTarget(cmTarget const* target)
{
cmSystemTools::Error("Qt4::rcc target not found ",
targetName.c_str());
return;
return std::string();
}
makefile->AddDefinition("_qt_rcc_executable", qt4Rcc->GetLocation(""));
}
else
{
cmSystemTools::Error("The CMAKE_AUTORCC feature supports only Qt 4 and "
"Qt 5 ", targetName.c_str());
return qt4Rcc->GetLocation("");
}
cmSystemTools::Error("The CMAKE_AUTORCC feature supports only Qt 4 and "
"Qt 5 ", targetName.c_str());
return std::string();
}
static cmGlobalGenerator* CreateGlobalGenerator(cmake* cm,

View File

@ -86,6 +86,8 @@ private:
void MergeRccOptions(std::vector<std::string> &opts,
const std::vector<std::string> &fileOpts, bool isQt5);
std::string GetRccExecutable(cmTarget const* target);
std::string QtMajorVersion;
std::string Sources;
std::string RccSources;