[cmake-developers] kde4_automoc issue
Alexander Neundorf
neundorf at kde.org
Mon Jul 17 16:23:39 EDT 2006
On Monday 17 July 2006 21:58, you wrote:
> Alexander Neundorf wrote:
> > On Monday 17 July 2006 16:01, you wrote:
> >> Brad King wrote:
> >>> Alexander Neundorf wrote:
> >>>> if (need_automoc)
> >>>> # create a file with all files for automoc
> >>>> file(WRITE kfoo_automoc_files ${automocfiles)
> >>>> # create a target which will be built before the actual target
> >>>> ADD_CUSTOM_TARGET(kfoo_automoc COMMAND <scan all files from
> >>>> kfoo_automoc and run moc if required> )
> >>>> ADD_DEPENDENCIES(kfoo kfoo_automoc)
> >>>> endif
> >>>>
> >>>> This would move the automoc from cmake time to buildtime, which is a
> >>>> good thing.
> >>>
> >>> Try this:
> >>>
> >>> ADD_CUSTOM_TARGET(kfoo_automoc)
> >>> ADD_CUSTOM_COMMAND(
> >>> OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/kfoo_automoc.stamp
> >>> COMMAND <scan all files and run moc, then touch kfoo_automoc.stamp>
> >>> DEPENDS <all files>
> >>> )
> >>
> >> Oops, I meant something more like:
> >>
> >> ADD_CUSTOM_COMMAND(
> >> OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/kfoo_automoc.stamp
> >> COMMAND <scan all files and run moc, then touch kfoo_automoc.stamp>
> >> DEPENDS <all files>
> >> )
> >> ADD_CUSTOM_TARGET(kfoo_automoc
> >> DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/kfoo_automoc.stamp
> >> )
> >
> > What is this intermediate target good for ?
>
> To make sure all moc-ing occurs before implicit #include dependencies
> are scanned.
>
> > Doesn't this mean once kfoo_automoc.stamp has been created it won't run
> > again ?
>
> No, because the custom command depends on all the input files, so if any
> one has changed the rule will run again.
Ok.
> > And the stamp would have to be on file-level, so that I can check for
> > every single source file whether it has to be scanned again.
>
> With this design at least nothing will happen when it is up to date. If
> any file has changed all will be rescanned. File-level dependencies can
> be achieved if we add an IF(file1 IS_NEWER file2) command which can be
> used to test each .cpp file against the .stamp file.
Yes, this would be cool :-)
Alex
P.S. any comments regarding my preprocessing/compile but don't assemble
patch ?
--
Work: alexander.neundorf AT jenoptik.com - http://www.jenoptik-los.de
Home: neundorf AT kde.org - http://www.kde.org
alex AT neundorf.net - http://www.neundorf.net
More information about the cmake-developers
mailing list