fix #13494: rerun automoc also if include dirs or moc options change
Until now it was only rerun if the compile definitions changed, but of course it also has to rerun if the include dirs or moc options change. Strange that I didn't notice this before... Alex
This commit is contained in:
parent
c478d55e31
commit
b001b6e129
|
@ -321,12 +321,31 @@ bool cmQtAutomoc::ReadAutomocInfoFile(cmMakefile* makefile,
|
||||||
this->ProjectSourceDir = makefile->GetSafeDefinition("AM_CMAKE_SOURCE_DIR");
|
this->ProjectSourceDir = makefile->GetSafeDefinition("AM_CMAKE_SOURCE_DIR");
|
||||||
this->TargetName = makefile->GetSafeDefinition("AM_TARGET_NAME");
|
this->TargetName = makefile->GetSafeDefinition("AM_TARGET_NAME");
|
||||||
|
|
||||||
|
this->CurrentCompileSettingsStr = this->MakeCompileSettingsString(makefile);
|
||||||
|
|
||||||
this->RelaxedMode = makefile->IsOn("AM_RELAXED_MODE");
|
this->RelaxedMode = makefile->IsOn("AM_RELAXED_MODE");
|
||||||
|
|
||||||
return true;
|
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,
|
bool cmQtAutomoc::ReadOldMocDefinitionsFile(cmMakefile* makefile,
|
||||||
const char* targetDirectory)
|
const char* targetDirectory)
|
||||||
{
|
{
|
||||||
|
@ -336,8 +355,8 @@ bool cmQtAutomoc::ReadOldMocDefinitionsFile(cmMakefile* makefile,
|
||||||
|
|
||||||
if (makefile->ReadListFile(0, filename.c_str()))
|
if (makefile->ReadListFile(0, filename.c_str()))
|
||||||
{
|
{
|
||||||
this->OldMocDefinitionsStr =
|
this->OldCompileSettingsStr =
|
||||||
makefile->GetSafeDefinition("AM_OLD_MOC_DEFINITIONS");
|
makefile->GetSafeDefinition("AM_OLD_COMPILE_SETTINGS");
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -352,9 +371,9 @@ void cmQtAutomoc::WriteOldMocDefinitionsFile(const char* targetDirectory)
|
||||||
std::fstream outfile;
|
std::fstream outfile;
|
||||||
outfile.open(filename.c_str(),
|
outfile.open(filename.c_str(),
|
||||||
std::ios::out | std::ios::trunc);
|
std::ios::out | std::ios::trunc);
|
||||||
outfile << "set(AM_OLD_MOC_DEFINITIONS "
|
outfile << "set(AM_OLD_COMPILE_SETTINGS "
|
||||||
<< cmLocalGenerator::EscapeForCMake(
|
<< cmLocalGenerator::EscapeForCMake(
|
||||||
this->Join(this->MocDefinitions, ' ').c_str()) << ")\n";
|
this->CurrentCompileSettingsStr.c_str()) << ")\n";
|
||||||
|
|
||||||
outfile.close();
|
outfile.close();
|
||||||
}
|
}
|
||||||
|
@ -471,7 +490,7 @@ void cmQtAutomoc::Init()
|
||||||
bool cmQtAutomoc::RunAutomoc()
|
bool cmQtAutomoc::RunAutomoc()
|
||||||
{
|
{
|
||||||
if (!cmsys::SystemTools::FileExists(this->OutMocCppFilename.c_str())
|
if (!cmsys::SystemTools::FileExists(this->OutMocCppFilename.c_str())
|
||||||
|| (this->OldMocDefinitionsStr != this->Join(this->MocDefinitions, ' ')))
|
|| (this->OldCompileSettingsStr != this->CurrentCompileSettingsStr))
|
||||||
{
|
{
|
||||||
this->GenerateAll = true;
|
this->GenerateAll = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,8 @@ private:
|
||||||
const char* targetDirectory);
|
const char* targetDirectory);
|
||||||
void WriteOldMocDefinitionsFile(const char* targetDirectory);
|
void WriteOldMocDefinitionsFile(const char* targetDirectory);
|
||||||
|
|
||||||
|
std::string MakeCompileSettingsString(cmMakefile* makefile);
|
||||||
|
|
||||||
bool RunAutomoc();
|
bool RunAutomoc();
|
||||||
bool GenerateMoc(const std::string& sourceFile,
|
bool GenerateMoc(const std::string& sourceFile,
|
||||||
const std::string& mocFileName);
|
const std::string& mocFileName);
|
||||||
|
@ -74,7 +76,8 @@ private:
|
||||||
std::string ProjectSourceDir;
|
std::string ProjectSourceDir;
|
||||||
std::string TargetName;
|
std::string TargetName;
|
||||||
|
|
||||||
std::string OldMocDefinitionsStr;
|
std::string CurrentCompileSettingsStr;
|
||||||
|
std::string OldCompileSettingsStr;
|
||||||
|
|
||||||
std::string OutMocCppFilename;
|
std::string OutMocCppFilename;
|
||||||
std::list<std::string> MocIncludes;
|
std::list<std::string> MocIncludes;
|
||||||
|
|
Loading…
Reference in New Issue