Browse Source

automoc: default to strict mode, use CMAKE_AUTOMOC_RELAXED_MODE

automoc now defaults to strict mode, also with Qt4, i.e. it behaves as
the documentation says by default. I also inverted the switch
CMAKE_AUTOMOC_STRICT_MODE to CMAKE_AUTOMOC_RELAXED_MODE.
Docs and test adapted accordingly.

Alex
Alex Neundorf 14 years ago
parent
commit
96fc5d5d07

+ 1 - 1
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@")

+ 4 - 5
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");
 

+ 4 - 8
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);
       }

+ 1 - 1
Source/cmQtAutomoc.h

@@ -85,7 +85,7 @@ private:
   bool ColorOutput;
   bool RunMocFailed;
   bool GenerateAll;
-  bool StrictMode;
+  bool RelaxedMode;
 
 };
 

+ 1 - 1
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.");
 

+ 3 - 0
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)