diff --git a/Modules/AutomocInfo.cmake.in b/Modules/AutomocInfo.cmake.in index 44f2da2cf..29dab9759 100644 --- a/Modules/AutomocInfo.cmake.in +++ b/Modules/AutomocInfo.cmake.in @@ -13,4 +13,4 @@ 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_STRICT_MODE "@_moc_strict_mode@") +set(AM_RELAXED_MODE "@_moc_relaxed_mode@") diff --git a/Source/cmDocumentVariables.cxx b/Source/cmDocumentVariables.cxx index a0632a2b3..fe29df9be 100644 --- a/Source/cmDocumentVariables.cxx +++ b/Source/cmDocumentVariables.cxx @@ -508,16 +508,15 @@ void cmDocumentVariables::DefineVariables(cmake* cm) "Variables That Change Behavior"); cm->DefineProperty - ("CMAKE_AUTOMOC_STRICT_MODE", cmProperty::VARIABLE, + ("CMAKE_AUTOMOC_RELAXED_MODE", cmProperty::VARIABLE, "Switch between strict and relaxed automoc mode.", - "When TRUE, automoc behaves exactly as described in the documentation " + "By default, automoc behaves exactly as described in the documentation " "of the AUTOMOC target property. " - "When set to FALSE, it accepts more input and tries to find the correct " + "When set to TRUE, it accepts more input and tries to find the correct " "input file for moc even if it differs from the documented behaviour. " "In this mode it e.g. also checks whether a header file is intended to " "be processed by moc when a \"foo.moc\" file has been included.\n" - "When using Qt4, CMAKE_AUTOMOC_STRICT_MODE is initialized to FALSE. " - "It also has to be set to FALSE for KDE4 compatibility.", + "Relaxed mode has to be enabled for KDE4 compatibility.", false, "Variables That Change Behavior"); diff --git a/Source/cmQtAutomoc.cxx b/Source/cmQtAutomoc.cxx index 65c7952d7..0d0d80cff 100644 --- a/Source/cmQtAutomoc.cxx +++ b/Source/cmQtAutomoc.cxx @@ -119,11 +119,7 @@ void cmQtAutomoc::SetupAutomocTarget(cmTarget* target) return; } - bool strictMode = (qtMajorVersion == "5"); - if (makefile->IsDefinitionSet("CMAKE_AUTOMOC_STRICT_MODE")) - { - strictMode = makefile->IsOn("CMAKE_AUTOMOC_STRICT_MODE"); - } + bool relaxedMode = makefile->IsOn("CMAKE_AUTOMOC_RELAXED_MODE"); // create a custom target for running automoc at buildtime: std::string automocTargetName = targetName; @@ -213,7 +209,7 @@ void cmQtAutomoc::SetupAutomocTarget(cmTarget* target) 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_strict_mode", strictMode ? "TRUE" : "FALSE"); + makefile->AddDefinition("_moc_relaxed_mode", relaxedMode ? "TRUE" : "FALSE"); const char* cmakeRoot = makefile->GetSafeDefinition("CMAKE_ROOT"); std::string inputFile = cmakeRoot; @@ -313,7 +309,7 @@ bool cmQtAutomoc::ReadAutomocInfoFile(cmMakefile* makefile, this->ProjectSourceDir = makefile->GetSafeDefinition("AM_CMAKE_SOURCE_DIR"); this->TargetName = makefile->GetSafeDefinition("AM_TARGET_NAME"); - this->StrictMode = makefile->IsOn("AM_STRICT_MODE"); + this->RelaxedMode = makefile->IsOn("AM_RELAXED_MODE"); return true; } @@ -509,7 +505,7 @@ bool cmQtAutomoc::RunAutomoc() { std::cout << "AUTOMOC: Checking " << absFilename << std::endl; } - if (this->StrictMode == false) + if (this->RelaxedMode) { this->ParseCppFile(absFilename, headerExtensions, includedMocs); } @@ -702,8 +698,9 @@ void cmQtAutomoc::ParseCppFile(const std::string& absFilename, "includes the moc file \"" << currentMoc << "\", but does not contain a Q_OBJECT macro. " "Running moc on " - << "\"" << headerToMoc << "\" ! Better include \"moc_" - << basename << ".cpp\" for a robust build.\n" + << "\"" << headerToMoc << "\" ! Include \"moc_" + << basename << ".cpp\" for a compatiblity with " + "strict mode (see CMAKE_AUTOMOC_RELAXED_MODE).\n" << std::endl; } else @@ -712,8 +709,9 @@ void cmQtAutomoc::ParseCppFile(const std::string& absFilename, "includes the moc file \"" << currentMoc << "\" instead of \"moc_" << basename << ".cpp\". " "Running moc on " - << "\"" << headerToMoc << "\" ! Better include \"moc_" - << basename << ".cpp\" for a robust build.\n" + << "\"" << headerToMoc << "\" ! Include \"moc_" + << basename << ".cpp\" for compatiblity with " + "strict mode (see CMAKE_AUTOMOC_RELAXED_MODE).\n" << std::endl; } } @@ -753,7 +751,8 @@ void cmQtAutomoc::ParseCppFile(const std::string& absFilename, "includes " << "\"" << ownMocUnderscoreFile << "\". Running moc on " << "\"" << absFilename << "\" ! Better include \"" - << scannedFileBasename << ".moc\" for a robust build.\n" + << scannedFileBasename << ".moc\" for compatiblity with " + "strict mode (see CMAKE_AUTOMOC_RELAXED_MODE).\n" << std::endl; includedMocs[absFilename] = ownMocUnderscoreFile; includedMocs.erase(ownMocHeaderFile); diff --git a/Source/cmQtAutomoc.h b/Source/cmQtAutomoc.h index a31f36a33..8cbbac19d 100644 --- a/Source/cmQtAutomoc.h +++ b/Source/cmQtAutomoc.h @@ -85,7 +85,7 @@ private: bool ColorOutput; bool RunMocFailed; bool GenerateAll; - bool StrictMode; + bool RelaxedMode; }; diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index fc3c1c9e1..6a937b8d3 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -162,7 +162,7 @@ void cmTarget::DefineProperties(cmake *cm) "CMAKE_AUTOMOC if it is set when a target is created.\n" "Additional command line options for moc can be set via the " "AUTOMOC_MOC_OPTIONS property.\n" - "By setting the CMAKE_AUTOMOC_STRICT_MODE variable to FALSE the rules " + "By setting the CMAKE_AUTOMOC_RELAXED_MODE variable to TRUE the rules " "for searching the files which will be processed by moc can be relaxed. " "See the documentation for this variable for more details."); diff --git a/Tests/QtAutomoc/CMakeLists.txt b/Tests/QtAutomoc/CMakeLists.txt index ebfb4f5fb..d255a5a7d 100644 --- a/Tests/QtAutomoc/CMakeLists.txt +++ b/Tests/QtAutomoc/CMakeLists.txt @@ -10,6 +10,9 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}) add_definitions(-DFOO) +# enable relaxed mode so automoc can handle all the special cases: +set(CMAKE_AUTOMOC_RELAXED_MODE TRUE) + # create an executable and a library target, both requiring automoc: add_library(codeeditorLib STATIC codeeditor.cpp)