AUTOGEN: Initializer: Always remember skipped files

This commit is contained in:
Sebastian Holtermann
2016-12-31 11:17:07 +01:00
parent d9313a8290
commit d8e45536fb
+33 -24
View File
@@ -101,14 +101,17 @@ static std::string GetQtMajorVersion(cmGeneratorTarget const* target)
static void SetupSourceFiles(cmGeneratorTarget const* target, static void SetupSourceFiles(cmGeneratorTarget const* target,
std::vector<std::string>& mocUicSources, std::vector<std::string>& mocUicSources,
std::vector<std::string>& mocUicHeaders, std::vector<std::string>& mocUicHeaders,
std::vector<std::string>& skipMoc, std::vector<std::string>& skipMocList,
std::vector<std::string>& skipUic) std::vector<std::string>& skipUicList)
{ {
cmMakefile* makefile = target->Target->GetMakefile(); cmMakefile* makefile = target->Target->GetMakefile();
std::vector<cmSourceFile*> srcFiles; std::vector<cmSourceFile*> srcFiles;
target->GetConfigCommonSourceFiles(srcFiles); target->GetConfigCommonSourceFiles(srcFiles);
const bool targetMoc = target->GetPropertyAsBool("AUTOMOC");
const bool targetUic = target->GetPropertyAsBool("AUTOUIC");
cmFilePathChecksum fpathCheckSum(makefile); cmFilePathChecksum fpathCheckSum(makefile);
for (std::vector<cmSourceFile*>::const_iterator fileIt = srcFiles.begin(); for (std::vector<cmSourceFile*>::const_iterator fileIt = srcFiles.begin();
fileIt != srcFiles.end(); ++fileIt) { fileIt != srcFiles.end(); ++fileIt) {
@@ -123,32 +126,38 @@ static void SetupSourceFiles(cmGeneratorTarget const* target,
if (cmSystemTools::IsOn(sf->GetPropertyForUser("GENERATED"))) { if (cmSystemTools::IsOn(sf->GetPropertyForUser("GENERATED"))) {
continue; continue;
} }
if (cmSystemTools::IsOn(sf->GetPropertyForUser("SKIP_AUTOGEN"))) {
continue;
}
const bool fileSkipUic =
cmSystemTools::IsOn(sf->GetPropertyForUser("SKIP_AUTOUIC"));
const bool fileSkipMoc =
cmSystemTools::IsOn(sf->GetPropertyForUser("SKIP_AUTOMOC"));
if (fileSkipUic && fileSkipMoc) {
continue;
}
// Use file
const std::string absFile = const std::string absFile =
cmsys::SystemTools::GetRealPath(sf->GetFullPath()); cmsys::SystemTools::GetRealPath(sf->GetFullPath());
// Add file name to sources or headers list // Skip flags
if (fileType == cmSystemTools::CXX_FILE_FORMAT) { const bool skipAll =
mocUicSources.push_back(absFile); cmSystemTools::IsOn(sf->GetPropertyForUser("SKIP_AUTOGEN"));
} else if (fileType == cmSystemTools::HEADER_FILE_FORMAT) { const bool skipMoc =
mocUicHeaders.push_back(absFile); skipAll || cmSystemTools::IsOn(sf->GetPropertyForUser("SKIP_AUTOMOC"));
const bool skipUic =
skipAll || cmSystemTools::IsOn(sf->GetPropertyForUser("SKIP_AUTOUIC"));
// Add file name to skip lists.
// Do this even when the file is not added to the sources/headers lists
// because the file name may be extracted from an other file when
// processing
if (skipMoc) {
skipMocList.push_back(absFile);
} }
// Add file name to skip lists on demand if (skipUic) {
if (fileSkipUic) { skipUicList.push_back(absFile);
skipUic.push_back(absFile);
} }
if (fileSkipMoc) {
skipMoc.push_back(absFile); if ((targetMoc && !skipMoc) || (targetUic && !skipUic)) {
// Add file name to sources or headers list
switch (fileType) {
case cmSystemTools::CXX_FILE_FORMAT:
mocUicSources.push_back(absFile);
break;
case cmSystemTools::HEADER_FILE_FORMAT:
mocUicHeaders.push_back(absFile);
break;
default:
break;
}
} }
} }
} }