[cmake-developers] cmake automoc breaks kde
Alexander Neundorf
neundorf at kde.org
Sun Nov 6 12:42:42 EST 2011
On Wednesday 02 November 2011, Stephen Kelly wrote:
> On 11/02/2011 06:32 PM, David Faure wrote:
> >> > #include "foo.moc"
> >> > #include "moc_foo.cpp"
> >> >
> >> > This would have generated twice the same moc file, I think. IMO this
> >> > is really confusing.
> >
> > Well there is no reason to include both, unless you have Q_OBJECT in the
> > .cpp file too:-)
>
> I'm sure I've seen this in several places in Qt code. Grepping I found
> one in
>
> qt48/src/scripttools/debugging/qscriptenginedebugger.cpp
>
> ....
> QT_END_NAMESPACE
>
> #include "qscriptenginedebugger.moc"
>
> #include "moc_qscriptenginedebugger.cpp"
I had a look now too.
Why do they include both files here ?
Using qmake, the qscriptenginedebugger.moc is as far as I can see, for the moc
from the cpp file, while moc_qscriptenginedebugger.cpp is for the moc from the
header.
Now, why is the moc_...cpp actually #included at all ?
Isn't it enough to list the header in the qmake file, and it will be moced ?
Also, in qmake/options.cpp I see the follow code:
Option::cpp_moc_mod = "";
Option::h_moc_mod = "moc_";
...
Option::cpp_moc_ext = ".moc";
Option::h_moc_ext = ".cpp";
which seems to say that the moc file for foo.cpp will be foo.moc, while the
moc file for foo.h will be moc_foo.cpp (so it can be built as a standalone cpp
file).
Alex
More information about the cmake-developers
mailing list