[Development] Announcing moc_combine
marc.mutz at kdab.com
Mon May 30 17:53:48 CEST 2016
On Monday 30 May 2016 16:24:38 Jędrzej Nowacki wrote:
> On Monday 30 of May 2016 10:19:38 Marc Mutz wrote:
> > On Sunday 29 May 2016 18:05:07 Thiago Macieira wrote:
> > > I've just pushed a feature to moc that makes it process multiple
> > > headers
> > > at the same time, producing only one output file
> > Separate compilation is not how I would recommend to use moc-generated
> > files. I'd recommend to always include the moc file in the corresponding
> > cpp file. That gives the compiler the whole picture and enables better
> > optimisation and error checking[2,3].
> If moc has full picture it also can apply some nice optimizations, like for
> example here https://codereview.qt-project.org/#/c/75151/.
This is orthogonal.
Obviously, I have nothing against running moc only once per
library/executable, and applying optimisations such as string and sub-string
sharing across classes. I also have nothing against a single output file for
the tables. On the contrary. I applaud such changes.
But I don't want QObject subclass member functions compiled into separate TUs
anymore, for the reasons cited.
So this would meet everyones requirements: a single moc run on all headers
(and cpps) of a library, generating one output file with one large data table,
and one file per class (or file), to be included in the class' .cpp file.
This would even preserve Q_PRIVATE_SLOT, leading to less churn (unless that
transition is desireable for other reasons than "doesn't work with
Marc Mutz <marc.mutz at kdab.com> | Senior Software Engineer
KDAB (Deutschland) GmbH & Co.KG, a KDAB Group Company
KDAB - Qt, C++ and OpenGL Experts
More information about the Development