[cmake-developers] Use OBJECT_DEPENDS in qt4_generate_moc() ?

Clinton Stimpson clinton at elemtech.com
Thu Jul 5 12:29:55 EDT 2012


On Thursday, July 05, 2012 06:20:56 PM Alexander Neundorf wrote:
> On Thursday, 5. July 2012 17:37:21 Clinton Stimpson wrote:
> > On Friday, June 15, 2012 09:56:51 PM Alexander Neundorf wrote:
> > > Hi,
> > > 
> > > attached is a small patch which sets the OBJECT_DEPENDS  property of
> > > a
> > > moced file to the generated moc file.
> > > This has the effect that before the cpp file is built, moc has been
> > > run
> > > on it. We have that in KDE's version of qt4_generate_moc() this way
> > > since 2006 and it works for us.
> > > In cmake's version, it was removed January 11th 2008, the removed
> > > call to MACRO_ADD_FILE_DEPENDENCIES():
> > > http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=510f578f8b53858fb
> > > b541c 4e7 e4731de9bfbd483
> > > 
> > > Now since we are trying to get rid of our custom stuff in KDE, we
> > > hit
> > > that issue when trying to build parts of KDE with FindQt4.cmake from
> > > cmake.
> > > 
> > > Do you remember why this line was removed ?
> > > What do you think about adding it again, as the attached patch does
> > > ?
> > > 
> > > Alex
> > 
> > It was probably removed because I thought add_custom_command() already
> > added the needed dependency information.
> > 
> > It should already have this:
> > mocable.h -> moc_mocable.cpp ->  moc_mocable.o
> 
> This works if the generated moc file is listed as source file for a target.
> In several places we did not do this, and relied instead on the
> OBJECT_DEPENDS.
> Ahh, this was in places where the moc file is generated from a cpp file,
> which includes the moc file.
> In those cases the OBJECT_DEPENDS makes it work.
> 
> We fixed this in the meantime by adding the generated moc file to the source
> list (which is not too bad, since the developer explicitely names the moc
> file, so it is ok).
> 
> So, I would like to have that dependency, but I'm unsure whether it might
> have any unwanted side effects.
> 

Ah, so for the case
mocable.h -> mocable.moc -> mocable.cpp (includes mocable.moc)
the mocable.moc is not listed in the sources of the target.

I can't think of any possible unwanted side effects.
I agree that we need to have this patch.

-- 
Clinton Stimpson
Elemental Technologies, Inc
Computational Simulation Software, LLC
www.csimsoft.com



More information about the cmake-developers mailing list