automoc: always run moc on the cpp file if there is a foo.moc included
This makes automoc behaves as the documentation says. If there is a #include "foo.moc" in the source file, moc will be executed on foo.cpp. Before it was also executed on foo.cpp, but only if foo.cpp contained a Q_OBJECT macro, otherwise moc was executed on foo.h. This was confusing, and this change also shouldn't break anything, since the headers are moc'ed anyway if they contain a Q_OBJECT macro. Alex
This commit is contained in:
parent
ea8ac9f5dc
commit
5e8e9ad68c
|
@ -492,7 +492,6 @@ void cmQtAutomoc::ParseCppFile(const std::string& absFilename,
|
||||||
cmsys::RegularExpression mocIncludeRegExp(
|
cmsys::RegularExpression mocIncludeRegExp(
|
||||||
"[\n][ \t]*#[ \t]*include[ \t]+"
|
"[\n][ \t]*#[ \t]*include[ \t]+"
|
||||||
"[\"<](([^ \">]+/)?moc_[^ \">/]+\\.cpp|[^ \">]+\\.moc)[\">]");
|
"[\"<](([^ \">]+/)?moc_[^ \">/]+\\.cpp|[^ \">]+\\.moc)[\">]");
|
||||||
cmsys::RegularExpression qObjectRegExp("[\n][ \t]*Q_OBJECT[^a-zA-Z0-9_]");
|
|
||||||
std::list<std::string> headerExtensions;
|
std::list<std::string> headerExtensions;
|
||||||
headerExtensions.push_back(".h");
|
headerExtensions.push_back(".h");
|
||||||
headerExtensions.push_back(".hpp");
|
headerExtensions.push_back(".hpp");
|
||||||
|
@ -536,17 +535,13 @@ void cmQtAutomoc::ParseCppFile(const std::string& absFilename,
|
||||||
// the Q_OBJECT class declaration in a header file.
|
// the Q_OBJECT class declaration in a header file.
|
||||||
// If the moc include is of the foo.moc style we need to look for
|
// If the moc include is of the foo.moc style we need to look for
|
||||||
// a Q_OBJECT macro in the current source file, if it contains the
|
// a Q_OBJECT macro in the current source file, if it contains the
|
||||||
// macro we generate the moc file from the source file, else from the
|
// macro we generate the moc file from the source file.
|
||||||
// header.
|
|
||||||
// Q_OBJECT
|
// Q_OBJECT
|
||||||
if (moc_style || !qObjectRegExp.find(contentsString))
|
if (moc_style)
|
||||||
{
|
{
|
||||||
if (moc_style)
|
// basename should be the part of the moc filename used for
|
||||||
{
|
// finding the correct header, so we need to remove the moc_ part
|
||||||
// basename should be the part of the moc filename used for
|
basename = basename.substr(4);
|
||||||
// finding the correct header, so we need to remove the moc_ part
|
|
||||||
basename = basename.substr(4);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool headerFound = false;
|
bool headerFound = false;
|
||||||
for(std::list<std::string>::const_iterator ext =
|
for(std::list<std::string>::const_iterator ext =
|
||||||
|
|
Loading…
Reference in New Issue