summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Cole <david.cole@kitware.com>2012-03-27 19:56:31 (GMT)
committerCMake Topic Stage <kwrobot@kitware.com>2012-03-27 19:56:31 (GMT)
commita3b7caaf5f661a9e07e1af5ee8a677f676714025 (patch)
tree724496c24ab597f7132f30851bdba0baa2f7b3ca
parentef309e94cb85d359db3cbf0aac3e7e290a0125f0 (diff)
parent9b32475587c1b7a911e5c635611c1fe5296b8740 (diff)
downloadCMake-a3b7caaf5f661a9e07e1af5ee8a677f676714025.zip
CMake-a3b7caaf5f661a9e07e1af5ee8a677f676714025.tar.gz
CMake-a3b7caaf5f661a9e07e1af5ee8a677f676714025.tar.bz2
Merge topic 'AutomocProperCMakeEscaping_13018'
9b32475 automoc: add define to test which caused bug #13018 2066511 automoc: fix #13018, proper cmake escaping to avoid false rebuilds c652812 make cmLocalGenerator::EscapeForCMake() static
-rw-r--r--Modules/AutomocInfo.cmake.in14
-rw-r--r--Source/cmLocalGenerator.h2
-rw-r--r--Source/cmQtAutomoc.cxx26
-rw-r--r--Tests/QtAutomoc/CMakeLists.txt2
4 files changed, 26 insertions, 18 deletions
diff --git a/Modules/AutomocInfo.cmake.in b/Modules/AutomocInfo.cmake.in
index 29dab97..13f2161 100644
--- a/Modules/AutomocInfo.cmake.in
+++ b/Modules/AutomocInfo.cmake.in
@@ -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@")
diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h
index 124747b..3e93819 100644
--- a/Source/cmLocalGenerator.h
+++ b/Source/cmLocalGenerator.h
@@ -251,7 +251,7 @@ public:
std::string EscapeForShellOldStyle(const char* str);
/** Escape the given string as an argument in a CMake script. */
- std::string EscapeForCMake(const char* str);
+ static std::string EscapeForCMake(const char* str);
enum FortranFormat
{
diff --git a/Source/cmQtAutomoc.cxx b/Source/cmQtAutomoc.cxx
index 0d0d80c..8b899bc 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();
}
diff --git a/Tests/QtAutomoc/CMakeLists.txt b/Tests/QtAutomoc/CMakeLists.txt
index d255a5a..5e3686d 100644
--- a/Tests/QtAutomoc/CMakeLists.txt
+++ b/Tests/QtAutomoc/CMakeLists.txt
@@ -8,7 +8,7 @@ include(UseQt4)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
-add_definitions(-DFOO)
+add_definitions(-DFOO -DSomeDefine="Barx")
# enable relaxed mode so automoc can handle all the special cases:
set(CMAKE_AUTOMOC_RELAXED_MODE TRUE)