[CMake] re-moc not occurring

Alexander Neundorf a.neundorf-work at gmx.net
Wed Jun 7 17:48:17 EDT 2006


> -------- Original-Nachricht --------
> Datum: Wed, 7 Jun 2006 23:02:41 +0200
> Von: Craig Bradney <cbradney at zip.com.au>
> An: Alexander Neundorf <a.neundorf-work at gmx.net>
> Betreff: Re: [CMake] re-moc not occurring
> 
> On Wednesday 07 June 2006 22:51, Alexander Neundorf wrote:
> > > -------- Original-Nachricht --------
> > > Datum: Wed, 7 Jun 2006 22:50:21 +0200
> > > Von: Craig Bradney <cbradney at zip.com.au>
> > > An: cmake at www.cmake.org
> > > Betreff: [CMake] re-moc not occurring
> > > 
> > > Hi,
> > >
> > > I'm wondering if theres been any known issues with regards to moc not
> > > being
> > > rerun after changes to the .h/.cpp files? We seem to hit this a lot 
> with
> > > Scribus. There might be a slight chance it happens more often when
> > > building
> > > out of source. Any ideas? What further info shall I give?
> >
> > How do you generate the moc rules ?
> > QT4_WRAP_CPP(), QT4_AUTOMOC() or QT4_GENERATE_MOC() ?
> 
> Scribus is Qt3.. so..
> 
> IF(QT_WRAP_CPP)
>   SCRIBUS_QT_WRAP_CPP(scribus ${SCRIBUS_MOC_CLASSES})
> ENDIF(QT_WRAP_CPP)
> 
> Where SCRIBUS_MOC_CLASSES is a list of the header files requiring
> moc'ing.. 
> and the SCRIBUS_QT_WRAP_CPP is as follows, partly based on your previous 
> advice 
> (http://mail.kde.org/pipermail/kde-buildsystem/2006-March/002063.html)
> ..
>   MACRO(SCRIBUS_QT_WRAP_CPP outfiles )
> 
>     # get include dirs
>     FOREACH(it ${ARGN})
>       GET_FILENAME_COMPONENT(outfile ${it} NAME_WE)
> 
>       SET(infile ${CMAKE_CURRENT_SOURCE_DIR}/${it})
>       SET(outfile ${CMAKE_CURRENT_BINARY_DIR}/${outfile}.moc)
>       ADD_CUSTOM_COMMAND(OUTPUT ${outfile}
>         COMMAND ${QT_MOC_EXECUTABLE}
>           ARGS -o ${outfile} ${infile}
>         MAIN_DEPENDENCY ${infile})
>       SET(${outfiles} ${${outfiles}} ${outfile})
>     ENDFOREACH(it)
> 
>   ENDMACRO(SCRIBUS_QT_WRAP_CPP)

Try whether replacing MAIN_DEPENDENCY with DEPENDS has an effect. They behave slighty differently.
Bill, didn't you want to add a note to the docs ?

Instead of 
SET(infile ${CMAKE_CURRENT_SOURCE_DIR}/${it})
you should use 
GET_FILENAME_COMPONENT(infile ${it} ABSOLUTE)
this will work both with absolute and relative paths.

Other from that, it looks good.
Which cmake version do you use/require ?
I'd recommend 2.4.2.

Bye
Alex

-- 


"Feel free" – 10 GB Mailbox, 100 FreeSMS/Monat ...
Jetzt GMX TopMail testen: http://www.gmx.net/de/go/topmail


More information about the CMake mailing list