Other pb with cmake

Laurent Montel montel at kde.org
Fri Mar 17 18:17:27 CET 2006


On Friday 17 March 2006 17:28, Alexander Neundorf wrote:
> Hi,
>
> On Thursday 16 March 2006 22:27, Laurent Montel wrote:
> > On Thursday 16 March 2006 19:08, Alexander Neundorf wrote:
> > > They create the moc files in CMAKE_CURRENT_BINARY_DIR .
> > > If a source files includes:
> > > "#include <myname.moc>" automatically a rule for creating this moc file
> > > will be created.
> > > This would result in two moc files with the same name in the same
> > > directory. This doesn't work.
> > >
> > > Options:
> > > -create the moc files in the subdirs where the object file will be
> > > located This directory is currently not part of the include path, so it
> > > probably wouldn't be found
> >
> > I changed today kde macro to create them into own directory.
> >
> > So it fixed some bugs but it's right include directory is not adding so
> > there is some compile error.
> > => as david said " Ideally we could automate this include path stuff."
> > For the moment it's not the case. I don't know how to do.
>
> I think this cannot work.
> Let's say we have
> src/board.cpp -> #include "board.moc"
> and
> src/lib/board.cpp -> #include "board.moc"
>
> If we compile out-of-source, the moc files cannot both be created in the
> same directory: e.g. build/board.moc
>
> But creating them in different directories wouldn't help either:
>
> build/board.moc
> build/lib/board.moc
>
> In order for the preprocessor to find build/lib/board.moc, build/lib/ would
> have to be added to the include path, just as build/ is part of the include
> path.
> This would mean *both* directories would be in the include path and for
> both files, src/board.cpp and src/lib/board.cpp the include path would be
> the same, so for both source files the *same* board.moc would be found
> first, so both would include build/board.moc.
>
> So I think we really have to change the moc handling for these conflicting
> files, i.e. automoc for on of them, and "manual" moc for the others, like
> this:
>
> set_source_files_properties(src/lib/board.cpp ...more files
>                              PROPERTIES SKIP_AUTOMOC TRUE)
> qt4_wrap_cpp(MY_SRCS src/lib/board.h ...more files which need to be mocced)

Where is the difference ?
we will generate .moc too.
we will link with src/lib/board.moc and src/board.moc

So how your method will fix potential problem ?

> Bye
> Alex


More information about the Kde-buildsystem mailing list