Merge topic 'AutomocRerunFix'
b001b6e
fix #13494: rerun automoc also if include dirs or moc options change
This commit is contained in:
commit
a028fffaad
|
@ -321,12 +321,31 @@ bool cmQtAutomoc::ReadAutomocInfoFile(cmMakefile* makefile,
|
|||
this->ProjectSourceDir = makefile->GetSafeDefinition("AM_CMAKE_SOURCE_DIR");
|
||||
this->TargetName = makefile->GetSafeDefinition("AM_TARGET_NAME");
|
||||
|
||||
this->CurrentCompileSettingsStr = this->MakeCompileSettingsString(makefile);
|
||||
|
||||
this->RelaxedMode = makefile->IsOn("AM_RELAXED_MODE");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
std::string cmQtAutomoc::MakeCompileSettingsString(cmMakefile* makefile)
|
||||
{
|
||||
std::string s;
|
||||
s += makefile->GetSafeDefinition("AM_MOC_DEFINITIONS");
|
||||
s += " ~~~ ";
|
||||
s += makefile->GetSafeDefinition("AM_MOC_INCLUDES");
|
||||
s += " ~~~ ";
|
||||
s += makefile->GetSafeDefinition("AM_MOC_OPTIONS");
|
||||
s += " ~~~ ";
|
||||
s += makefile->IsOn("AM_CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE") ? "TRUE"
|
||||
: "FALSE";
|
||||
s += " ~~~ ";
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
|
||||
bool cmQtAutomoc::ReadOldMocDefinitionsFile(cmMakefile* makefile,
|
||||
const char* targetDirectory)
|
||||
{
|
||||
|
@ -336,8 +355,8 @@ bool cmQtAutomoc::ReadOldMocDefinitionsFile(cmMakefile* makefile,
|
|||
|
||||
if (makefile->ReadListFile(0, filename.c_str()))
|
||||
{
|
||||
this->OldMocDefinitionsStr =
|
||||
makefile->GetSafeDefinition("AM_OLD_MOC_DEFINITIONS");
|
||||
this->OldCompileSettingsStr =
|
||||
makefile->GetSafeDefinition("AM_OLD_COMPILE_SETTINGS");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -352,9 +371,9 @@ void cmQtAutomoc::WriteOldMocDefinitionsFile(const char* targetDirectory)
|
|||
std::fstream outfile;
|
||||
outfile.open(filename.c_str(),
|
||||
std::ios::out | std::ios::trunc);
|
||||
outfile << "set(AM_OLD_MOC_DEFINITIONS "
|
||||
outfile << "set(AM_OLD_COMPILE_SETTINGS "
|
||||
<< cmLocalGenerator::EscapeForCMake(
|
||||
this->Join(this->MocDefinitions, ' ').c_str()) << ")\n";
|
||||
this->CurrentCompileSettingsStr.c_str()) << ")\n";
|
||||
|
||||
outfile.close();
|
||||
}
|
||||
|
@ -471,7 +490,7 @@ void cmQtAutomoc::Init()
|
|||
bool cmQtAutomoc::RunAutomoc()
|
||||
{
|
||||
if (!cmsys::SystemTools::FileExists(this->OutMocCppFilename.c_str())
|
||||
|| (this->OldMocDefinitionsStr != this->Join(this->MocDefinitions, ' ')))
|
||||
|| (this->OldCompileSettingsStr != this->CurrentCompileSettingsStr))
|
||||
{
|
||||
this->GenerateAll = true;
|
||||
}
|
||||
|
|
|
@ -35,6 +35,8 @@ private:
|
|||
const char* targetDirectory);
|
||||
void WriteOldMocDefinitionsFile(const char* targetDirectory);
|
||||
|
||||
std::string MakeCompileSettingsString(cmMakefile* makefile);
|
||||
|
||||
bool RunAutomoc();
|
||||
bool GenerateMoc(const std::string& sourceFile,
|
||||
const std::string& mocFileName);
|
||||
|
@ -74,7 +76,8 @@ private:
|
|||
std::string ProjectSourceDir;
|
||||
std::string TargetName;
|
||||
|
||||
std::string OldMocDefinitionsStr;
|
||||
std::string CurrentCompileSettingsStr;
|
||||
std::string OldCompileSettingsStr;
|
||||
|
||||
std::string OutMocCppFilename;
|
||||
std::list<std::string> MocIncludes;
|
||||
|
|
Loading…
Reference in New Issue