summaryrefslogtreecommitdiff
path: root/Source/cmQtAutomoc.cxx
diff options
context:
space:
mode:
authorAlex Neundorf <neundorf@kde.org>2012-03-20 22:52:05 +0100
committerAlex Neundorf <neundorf@kde.org>2012-03-26 21:45:27 +0200
commit2066511ca9a0b86d45e07357ebec8dd07f1c93b9 (patch)
tree00cb3def3937922b3793124c146cd13f304121a8 /Source/cmQtAutomoc.cxx
parentc652812af741c2468ad5b58e789244700aa51be5 (diff)
downloadcmake-2066511ca9a0b86d45e07357ebec8dd07f1c93b9.tar.gz
automoc: fix #13018, proper cmake escaping to avoid false rebuilds
The variables stored in the AutomocInfo.cmake file were not properly escaped, so when reading them back they could turn into lists, if they contained double quotes initially. This patch fixes this by using cmLocalGenerator::EscapeForCMake() to escape the variables properly. Alex
Diffstat (limited to 'Source/cmQtAutomoc.cxx')
-rw-r--r--Source/cmQtAutomoc.cxx26
1 files changed, 17 insertions, 9 deletions
diff --git a/Source/cmQtAutomoc.cxx b/Source/cmQtAutomoc.cxx
index 0d0d80cff7..8b899bc628 100644
--- a/Source/cmQtAutomoc.cxx
+++ b/Source/cmQtAutomoc.cxx
@@ -202,13 +202,20 @@ void cmQtAutomoc::SetupAutomocTarget(cmTarget* target)
cmMakefile::ScopePushPop varScope(makefile);
static_cast<void>(varScope);
- makefile->AddDefinition("_moc_target_name", automocTargetName.c_str());
- makefile->AddDefinition("_moc_incs", _moc_incs.c_str());
- makefile->AddDefinition("_moc_defs", _moc_defs.c_str());
- makefile->AddDefinition("_moc_compile_defs", _moc_compile_defs.c_str());
- makefile->AddDefinition("_moc_options", _moc_options.c_str());
- makefile->AddDefinition("_moc_files", _moc_files.c_str());
- makefile->AddDefinition("_moc_headers", _moc_headers.c_str());
+ makefile->AddDefinition("_moc_target_name",
+ cmLocalGenerator::EscapeForCMake(automocTargetName.c_str()).c_str());
+ makefile->AddDefinition("_moc_incs",
+ cmLocalGenerator::EscapeForCMake(_moc_incs.c_str()).c_str());
+ makefile->AddDefinition("_moc_defs",
+ cmLocalGenerator::EscapeForCMake(_moc_defs.c_str()).c_str());
+ makefile->AddDefinition("_moc_compile_defs",
+ cmLocalGenerator::EscapeForCMake(_moc_compile_defs.c_str()).c_str());
+ makefile->AddDefinition("_moc_options",
+ cmLocalGenerator::EscapeForCMake(_moc_options.c_str()).c_str());
+ makefile->AddDefinition("_moc_files",
+ cmLocalGenerator::EscapeForCMake(_moc_files.c_str()).c_str());
+ makefile->AddDefinition("_moc_headers",
+ cmLocalGenerator::EscapeForCMake(_moc_headers.c_str()).c_str());
makefile->AddDefinition("_moc_relaxed_mode", relaxedMode ? "TRUE" : "FALSE");
const char* cmakeRoot = makefile->GetSafeDefinition("CMAKE_ROOT");
@@ -340,8 +347,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 \""
- << this->Join(this->MocDefinitions, ' ') << "\")\n";
+ outfile << "set(AM_OLD_MOC_DEFINITIONS "
+ << cmLocalGenerator::EscapeForCMake(
+ this->Join(this->MocDefinitions, ' ').c_str()) << ")\n";
outfile.close();
}