Automoc: modified handling of included .moc files
-enable the KDE4-compatiblity mode only when using Qt4 -always (except in the KDE4 compat mode) error out if a cpp-file contains "Q_OBJECT", but does not include filename.moc Alex
This commit is contained in:
parent
e44ebd5f9b
commit
72bb058e92
|
@ -652,13 +652,15 @@ void cmQtAutomoc::ParseCppFile(const std::string& absFilename,
|
||||||
// If this is the case, the moc_foo.cpp should probably be generated from
|
// If this is the case, the moc_foo.cpp should probably be generated from
|
||||||
// foo.cpp instead of foo.h, because otherwise it won't build.
|
// foo.cpp instead of foo.h, because otherwise it won't build.
|
||||||
// But warn, since this is not how it is supposed to be used.
|
// But warn, since this is not how it is supposed to be used.
|
||||||
if ((dotMocIncluded == false) && (mocUnderscoreIncluded == true))
|
if ((dotMocIncluded == false) && (containsQ_OBJECT(contentsString)))
|
||||||
{
|
{
|
||||||
if (containsQ_OBJECT(contentsString))
|
if ((this->QtMajorVersion == "4") && (mocUnderscoreIncluded == true))
|
||||||
{
|
{
|
||||||
|
// this is for KDE4 compatibility:
|
||||||
std::cerr << "AUTOMOC: warning: " << absFilename << ": The file "
|
std::cerr << "AUTOMOC: warning: " << absFilename << ": The file "
|
||||||
<< "contains a Q_OBJECT macro, but does not include "
|
<< "contains a Q_OBJECT macro, but does not include "
|
||||||
<< "\"" << scannedFileBasename << ".moc\", but instead includes "
|
<< "\"" << scannedFileBasename << ".moc\", but instead "
|
||||||
|
"includes "
|
||||||
<< "\"" << ownMocUnderscoreFile << "\". Running moc on "
|
<< "\"" << ownMocUnderscoreFile << "\". Running moc on "
|
||||||
<< "\"" << absFilename << "\" ! Better include \""
|
<< "\"" << absFilename << "\" ! Better include \""
|
||||||
<< scannedFileBasename << ".moc\" for a robust build."
|
<< scannedFileBasename << ".moc\" for a robust build."
|
||||||
|
@ -666,6 +668,15 @@ void cmQtAutomoc::ParseCppFile(const std::string& absFilename,
|
||||||
includedMocs[absFilename] = ownMocUnderscoreFile;
|
includedMocs[absFilename] = ownMocUnderscoreFile;
|
||||||
includedMocs.erase(ownMocHeaderFile);
|
includedMocs.erase(ownMocHeaderFile);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// otherwise always error out since it will not compile:
|
||||||
|
std::cerr << "AUTOMOC: error: " << absFilename << ": The file "
|
||||||
|
<< "contains a Q_OBJECT macro, but does not include "
|
||||||
|
<< "\"" << scannedFileBasename << ".moc\" !"
|
||||||
|
<< std::endl;
|
||||||
|
::exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// search for header files and private header files we may need to moc:
|
// search for header files and private header files we may need to moc:
|
||||||
|
|
Loading…
Reference in New Issue