Extract an SetupAutoMocTarget method.
This class will soon gain methods for autouic and autorcc.
This commit is contained in:
parent
ca124a1515
commit
85b3d6e73d
|
@ -310,7 +310,61 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
|
||||||
target->AddUtility(autogenTargetName.c_str());
|
target->AddUtility(autogenTargetName.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
// configure a file to get all information to automoc at buildtime:
|
std::map<std::string, std::string> configIncludes;
|
||||||
|
std::map<std::string, std::string> configDefines;
|
||||||
|
|
||||||
|
this->SetupAutoMocTarget(target, autogenTargetName,
|
||||||
|
configIncludes, configDefines);
|
||||||
|
|
||||||
|
const char* cmakeRoot = makefile->GetSafeDefinition("CMAKE_ROOT");
|
||||||
|
std::string inputFile = cmakeRoot;
|
||||||
|
inputFile += "/Modules/AutogenInfo.cmake.in";
|
||||||
|
std::string outputFile = targetDir;
|
||||||
|
outputFile += "/AutogenInfo.cmake";
|
||||||
|
makefile->ConfigureFile(inputFile.c_str(), outputFile.c_str(),
|
||||||
|
false, true, false);
|
||||||
|
|
||||||
|
if (!configDefines.empty() || !configIncludes.empty())
|
||||||
|
{
|
||||||
|
std::ofstream infoFile(outputFile.c_str(), std::ios::app);
|
||||||
|
if ( !infoFile )
|
||||||
|
{
|
||||||
|
std::string error = "Internal CMake error when trying to open file: ";
|
||||||
|
error += outputFile.c_str();
|
||||||
|
error += " for writing.";
|
||||||
|
cmSystemTools::Error(error.c_str());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!configDefines.empty())
|
||||||
|
{
|
||||||
|
for (std::map<std::string, std::string>::iterator
|
||||||
|
it = configDefines.begin(), end = configDefines.end();
|
||||||
|
it != end; ++it)
|
||||||
|
{
|
||||||
|
infoFile << "set(AM_MOC_COMPILE_DEFINITIONS_" << it->first <<
|
||||||
|
" " << it->second << ")\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!configIncludes.empty())
|
||||||
|
{
|
||||||
|
for (std::map<std::string, std::string>::iterator
|
||||||
|
it = configIncludes.begin(), end = configIncludes.end();
|
||||||
|
it != end; ++it)
|
||||||
|
{
|
||||||
|
infoFile << "set(AM_MOC_INCLUDES_" << it->first <<
|
||||||
|
" " << it->second << ")\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmQtAutoGenerators::SetupAutoMocTarget(cmTarget* target,
|
||||||
|
const std::string &autogenTargetName,
|
||||||
|
std::map<std::string, std::string> &configIncludes,
|
||||||
|
std::map<std::string, std::string> &configDefines)
|
||||||
|
{
|
||||||
|
cmMakefile* makefile = target->GetMakefile();
|
||||||
|
|
||||||
std::string _moc_files;
|
std::string _moc_files;
|
||||||
std::string _moc_headers;
|
std::string _moc_headers;
|
||||||
const char* sepFiles = "";
|
const char* sepFiles = "";
|
||||||
|
@ -371,9 +425,6 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
|
||||||
makefile->AddDefinition("_moc_compile_defs",
|
makefile->AddDefinition("_moc_compile_defs",
|
||||||
cmLocalGenerator::EscapeForCMake(_moc_compile_defs.c_str()).c_str());
|
cmLocalGenerator::EscapeForCMake(_moc_compile_defs.c_str()).c_str());
|
||||||
|
|
||||||
std::map<std::string, std::string> configIncludes;
|
|
||||||
std::map<std::string, std::string> configDefines;
|
|
||||||
|
|
||||||
for (std::vector<std::string>::const_iterator li = configs.begin();
|
for (std::vector<std::string>::const_iterator li = configs.begin();
|
||||||
li != configs.end(); ++li)
|
li != configs.end(); ++li)
|
||||||
{
|
{
|
||||||
|
@ -402,11 +453,10 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
|
||||||
const char *qtMoc = makefile->GetSafeDefinition("QT_MOC_EXECUTABLE");
|
const char *qtMoc = makefile->GetSafeDefinition("QT_MOC_EXECUTABLE");
|
||||||
makefile->AddDefinition("_qt_moc_executable", qtMoc);
|
makefile->AddDefinition("_qt_moc_executable", qtMoc);
|
||||||
}
|
|
||||||
|
|
||||||
|
const char *qtVersion = makefile->GetDefinition("_target_qt_version");
|
||||||
if (strcmp(qtVersion, "5") == 0)
|
if (strcmp(qtVersion, "5") == 0)
|
||||||
{
|
{
|
||||||
cmTarget *qt5Moc = makefile->FindTargetToUse("Qt5::moc");
|
cmTarget *qt5Moc = makefile->FindTargetToUse("Qt5::moc");
|
||||||
|
@ -426,50 +476,8 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
|
||||||
"Qt 5 ", autogenTargetName.c_str());
|
"Qt 5 ", autogenTargetName.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* cmakeRoot = makefile->GetSafeDefinition("CMAKE_ROOT");
|
|
||||||
std::string inputFile = cmakeRoot;
|
|
||||||
inputFile += "/Modules/AutogenInfo.cmake.in";
|
|
||||||
std::string outputFile = targetDir;
|
|
||||||
outputFile += "/AutogenInfo.cmake";
|
|
||||||
makefile->ConfigureFile(inputFile.c_str(), outputFile.c_str(),
|
|
||||||
false, true, false);
|
|
||||||
|
|
||||||
if (!configDefines.empty() || !configIncludes.empty())
|
|
||||||
{
|
|
||||||
std::ofstream infoFile(outputFile.c_str(), std::ios::app);
|
|
||||||
if ( !infoFile )
|
|
||||||
{
|
|
||||||
std::string error = "Internal CMake error when trying to open file: ";
|
|
||||||
error += outputFile.c_str();
|
|
||||||
error += " for writing.";
|
|
||||||
cmSystemTools::Error(error.c_str());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!configDefines.empty())
|
|
||||||
{
|
|
||||||
for (std::map<std::string, std::string>::iterator
|
|
||||||
it = configDefines.begin(), end = configDefines.end();
|
|
||||||
it != end; ++it)
|
|
||||||
{
|
|
||||||
infoFile << "set(AM_MOC_COMPILE_DEFINITIONS_" << it->first <<
|
|
||||||
" " << it->second << ")\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!configIncludes.empty())
|
|
||||||
{
|
|
||||||
for (std::map<std::string, std::string>::iterator
|
|
||||||
it = configIncludes.begin(), end = configIncludes.end();
|
|
||||||
it != end; ++it)
|
|
||||||
{
|
|
||||||
infoFile << "set(AM_MOC_INCLUDES_" << it->first <<
|
|
||||||
" " << it->second << ")\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool cmQtAutoGenerators::Run(const char* targetDirectory, const char *config)
|
bool cmQtAutoGenerators::Run(const char* targetDirectory, const char *config)
|
||||||
{
|
{
|
||||||
bool success = true;
|
bool success = true;
|
||||||
|
|
|
@ -27,6 +27,11 @@ public:
|
||||||
void SetupAutoGenerateTarget(cmTarget* target);
|
void SetupAutoGenerateTarget(cmTarget* target);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void SetupAutoMocTarget(cmTarget* target,
|
||||||
|
const std::string &autogenTargetName,
|
||||||
|
std::map<std::string, std::string> &configIncludes,
|
||||||
|
std::map<std::string, std::string> &configDefines);
|
||||||
|
|
||||||
cmGlobalGenerator* CreateGlobalGenerator(cmake* cm,
|
cmGlobalGenerator* CreateGlobalGenerator(cmake* cm,
|
||||||
const char* targetDirectory);
|
const char* targetDirectory);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue