Merge topic 'AutomocFineTuning'
e474dcb
automoc: improved warning message in relaxed mode96fc5d5
automoc: default to strict mode, use CMAKE_AUTOMOC_RELAXED_MODE
This commit is contained in:
commit
16dacf3a6a
|
@ -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@")
|
||||
|
|
|
@ -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");
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -85,7 +85,7 @@ private:
|
|||
bool ColorOutput;
|
||||
bool RunMocFailed;
|
||||
bool GenerateAll;
|
||||
bool StrictMode;
|
||||
bool RelaxedMode;
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -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.");
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
Loading…
Reference in New Issue