diff options
Diffstat (limited to 'Source/cmQtAutomoc.cxx')
-rw-r--r-- | Source/cmQtAutomoc.cxx | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/Source/cmQtAutomoc.cxx b/Source/cmQtAutomoc.cxx index 3d92a59..ad11668 100644 --- a/Source/cmQtAutomoc.cxx +++ b/Source/cmQtAutomoc.cxx @@ -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 // 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. - 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 " << "contains a Q_OBJECT macro, but does not include " - << "\"" << scannedFileBasename << ".moc\", but instead includes " + << "\"" << scannedFileBasename << ".moc\", but instead " + "includes " << "\"" << ownMocUnderscoreFile << "\". Running moc on " << "\"" << absFilename << "\" ! Better include \"" << scannedFileBasename << ".moc\" for a robust build." @@ -666,6 +668,15 @@ void cmQtAutomoc::ParseCppFile(const std::string& absFilename, includedMocs[absFilename] = ownMocUnderscoreFile; 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: |