[cmake-developers] Automoc in cmake
Clinton Stimpson
clinton at elemtech.com
Thu Jun 9 11:06:22 EDT 2011
On Thursday, June 09, 2011 01:23:09 am Alexander Neundorf wrote:
> On Wednesday 08 June 2011, Brad King wrote:
> > On 6/8/2011 2:59 PM, Alexander Neundorf wrote:
> > > The "two things" are
> > > - BSD licensing, we did that 3 years ago:
> > > http://quickgit.kde.org/?p=automoc.git&a=commit&h=78fdba1e2d96bc4551253
> > > 17 48ffb770cb1124798 -and porting to STL+cmsys, we did that now
> >
> > Great. Please push a topic to the stage for review. Don't
> > merge it to 'next' yet though.
>
> It's not that far yet.
> You can see current automoc without Qt here:
> https://projects.kde.org/projects/kdesupport/automoc/repository/show?rev=no
> -qt
>
> It is a standalone executable, and to create an executable with automoc you
> have to use one of the macros provided in Automoc4Config.cmake:
> https://projects.kde.org/projects/kdesupport/automoc/repository/revisions/n
> o- qt/entry/Automoc4Config.cmake
>
> i.e. automoc4_add_library() or automoc4_add_executable().
>
> This creates a custom target for the respective target, and writes a file
> which contains the list of course files, include dirs, etc.
>
> When integrating it in cmake, it could simply stay that way, or it could be
> integrated better :-)
>
> At cmake time it needs to know:
> -the list of source files
> -the target it belongs to
>
> With that, it can generat for buildtime
> -the list of source files
> -the include directories
> -the definitions
> -maybe the directory for the target in CMakefiles/ for helper files
>
> This information somehow then at buildtime needs to get into the automoc.
> Currently this is a plain text file. If integrated, it might make more
> sense to put that in a cmake script file, so we don't need extra parsing
> functions.
>
> From the interface for the user, it could be an AUTOMOC argument for
> add_executable/add_library(), or new macros qt[45]_add_executable/library()
> could be created.
I'd like to see us go towards qt_* instead of having qt[45]_*.
> This can be done in C++ or cmake script, both should be ok.
>
> At build time, the logic is complex enough and it also has to be really
> fast so that this should IMO be done in the C++.
> It could either be a -E automoc <infofile> option, or a -P
> CMakeAutomoc.cmake script, which then calls a new automoc() function.
> This then needs to go through the list of source files, and if the file is
> newer than the associated stamp-file or if no stamp-file exists, it needs
> to parse the source file for a #include-moc statement, and if found,
> execute moc to generate this include file.
>
>
> And we need to make sure it is at least flexible enough for future Qt/moc
> changes.
I'm just curious if trying to put automoc in Qt has been pursued, and maybe
changing qmake to use automoc. It seems that would guarantee
maintenance/compatibility for future versions of Qt.
And if a future version of Qt could be compiled using CMake, having automoc on
the Qt side would fit with having Qt-config.cmake and macros.
--
Clinton Stimpson
Elemental Technologies, Inc
Computational Simulation Software, LLC
www.csimsoft.com
More information about the cmake-developers
mailing list