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
This commit is contained in:
parent
c652812af7
commit
2066511ca9
|
@ -1,9 +1,9 @@
|
|||
set(AM_SOURCES "@_moc_files@" )
|
||||
set(AM_HEADERS "@_moc_headers@" )
|
||||
set(AM_MOC_COMPILE_DEFINITIONS "@_moc_compile_defs@")
|
||||
set(AM_MOC_DEFINITIONS "@_moc_defs@")
|
||||
set(AM_MOC_INCLUDES "@_moc_incs@")
|
||||
set(AM_MOC_OPTIONS "@_moc_options@")
|
||||
set(AM_SOURCES @_moc_files@ )
|
||||
set(AM_HEADERS @_moc_headers@ )
|
||||
set(AM_MOC_COMPILE_DEFINITIONS @_moc_compile_defs@)
|
||||
set(AM_MOC_DEFINITIONS @_moc_defs@)
|
||||
set(AM_MOC_INCLUDES @_moc_incs@)
|
||||
set(AM_MOC_OPTIONS @_moc_options@)
|
||||
set(AM_CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE "@CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE@")
|
||||
set(AM_CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@/")
|
||||
set(AM_CMAKE_SOURCE_DIR "@CMAKE_SOURCE_DIR@/")
|
||||
|
@ -12,5 +12,5 @@ set(AM_CMAKE_CURRENT_SOURCE_DIR "@CMAKE_CURRENT_SOURCE_DIR@/")
|
|||
set(AM_CMAKE_CURRENT_BINARY_DIR "@CMAKE_CURRENT_BINARY_DIR@/")
|
||||
set(AM_QT_VERSION_MAJOR "@QT_VERSION_MAJOR@" )
|
||||
set(AM_Qt5Core_VERSION_MAJOR "@Qt5Core_VERSION_MAJOR@" )
|
||||
set(AM_TARGET_NAME "@_moc_target_name@")
|
||||
set(AM_TARGET_NAME @_moc_target_name@)
|
||||
set(AM_RELAXED_MODE "@_moc_relaxed_mode@")
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue