summaryrefslogtreecommitdiffstats
path: root/Source/cmQtAutoGeneratorInitializer.cxx
diff options
context:
space:
mode:
authorSebastian Holtermann <sebholt@xwmw.org>2016-12-02 15:24:51 (GMT)
committerBrad King <brad.king@kitware.com>2016-12-07 13:24:03 (GMT)
commit360c3427117312548358fddce906a346f17b8f5f (patch)
treeb87e12cbe0478d59c4e01a87ab4972777aa2610f /Source/cmQtAutoGeneratorInitializer.cxx
parentb5409d04f1c1309deb7e45163a106c8cb4daf38c (diff)
downloadCMake-360c3427117312548358fddce906a346f17b8f5f.zip
CMake-360c3427117312548358fddce906a346f17b8f5f.tar.gz
CMake-360c3427117312548358fddce906a346f17b8f5f.tar.bz2
QtAutogen: Reconfigure when .qrc file changes
Add .qrc files to the CMake depends. When the .qrc file changes the build system gets reconfigured and the resource files watch list gets updated.
Diffstat (limited to 'Source/cmQtAutoGeneratorInitializer.cxx')
-rw-r--r--Source/cmQtAutoGeneratorInitializer.cxx26
1 files changed, 15 insertions, 11 deletions
diff --git a/Source/cmQtAutoGeneratorInitializer.cxx b/Source/cmQtAutoGeneratorInitializer.cxx
index 889c61d..76fb8e5 100644
--- a/Source/cmQtAutoGeneratorInitializer.cxx
+++ b/Source/cmQtAutoGeneratorInitializer.cxx
@@ -109,7 +109,7 @@ static void SetupSourceFiles(cmGeneratorTarget const* target,
std::vector<cmSourceFile*> srcFiles;
target->GetConfigCommonSourceFiles(srcFiles);
- std::vector<std::string> newRccFiles;
+ std::vector<std::string> rccOutput;
cmFilePathChecksum fpathCheckSum(makefile);
for (std::vector<cmSourceFile*>::const_iterator fileIt = srcFiles.begin();
@@ -127,19 +127,16 @@ static void SetupSourceFiles(cmGeneratorTarget const* target,
if (ext == "qrc" &&
!cmSystemTools::IsOn(sf->GetPropertyForUser("SKIP_AUTORCC"))) {
+ // Run cmake again when .qrc file changes
+ makefile->AddCMakeDependFile ( absFile );
+
std::string rccOutputFile = GetAutogenTargetBuildDir(target);
rccOutputFile += fpathCheckSum.getPart(absFile);
rccOutputFile += "/qrc_";
rccOutputFile +=
cmsys::SystemTools::GetFilenameWithoutLastExtension(absFile);
rccOutputFile += ".cpp";
-
- makefile->GetOrCreateSource(rccOutputFile, true);
- newRccFiles.push_back(rccOutputFile);
-
- // Create output directory
- cmSystemTools::MakeDirectory(
- cmsys::SystemTools::GetFilenamePath(rccOutputFile));
+ rccOutput.push_back(rccOutputFile);
}
}
@@ -158,9 +155,16 @@ static void SetupSourceFiles(cmGeneratorTarget const* target,
}
}
- for (std::vector<std::string>::const_iterator fileIt = newRccFiles.begin();
- fileIt != newRccFiles.end(); ++fileIt) {
- const_cast<cmGeneratorTarget*>(target)->AddSource(*fileIt);
+ // Add rcc output files as sources
+ for (std::vector<std::string>::const_iterator fileIt = rccOutput.begin();
+ fileIt != rccOutput.end(); ++fileIt) {
+ const std::string& rccOutputFile = *fileIt;
+ // Add source
+ makefile->GetOrCreateSource(rccOutputFile, true);
+ const_cast<cmGeneratorTarget*>(target)->AddSource(rccOutputFile);
+ // Create output directory
+ cmSystemTools::MakeDirectory(
+ cmsys::SystemTools::GetFilenamePath(rccOutputFile));
}
}