[cmake-developers] cmake automoc breaks kde
Alexander Neundorf
neundorf at kde.org
Sun Nov 6 14:12:09 EST 2011
On Sunday 06 November 2011, Thiago Macieira wrote:
> On Sunday, 6 de November de 2011 18:42:42 Alexander Neundorf wrote:
> > 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 ?
>
> Why not?
>
> > Isn't it enough to list the header in the qmake file, and it will be
> > moced ?
>
> That is correct. That's what creates the moc_....cpp file.
>
> If the file is #included by anything, it isn't added to the list of sources
> to be compiled.
So compiling is a bit faster.
Any other reasons/advantages ?
Am I right that with qmake foo.moc is always generated from the cpp file,
while moc_foo.cpp is always generated from the header file ?
Alex
More information about the cmake-developers
mailing list