On Sunday 18 May 2008, Matthias Kretz wrote: > On Saturday 17 May 2008, Andras Mantia wrote: > > On Sunday 11 May 2008 00:58:38 Alexander Neundorf wrote: > > > If you experience any problems with automoc, please let us know at > > > [email protected] (or here). > > > > Here is a problem: kdebase fails to build if there are some older > > include/solid/control/ifaces around. > > The error is: > > cd > > /data/development/build/kde-trunk/kdebase/workspace/solid/networkmanager- > >0. 7 && /opt/kde4/bin/automoc4 > > /data/development/build/kde-trunk/kdebase/workspace/solid/networkmanager- > >0. 7/solid_networkmanager07_automoc.cpp > > /data/development/sources/kde-trunk/kdebase/workspace/solid/networkmanage > >r- 0.7 > > /data/development/build/kde-trunk/kdebase/workspace/solid/networkmanager- > >0. 7 /opt/qt4/bin/moc [....] > > Generating > > /data/development/build/kde-trunk/kdebase/workspace/solid/networkmanager- > >0. 7/networkinterface.moc from > > /data/development/sources/kde-trunk/kdebase/workspace/solid/networkmanage > >r- 0.7/networkinterface.h > > /data/development/sources/kde-trunk/kdebase/workspace/solid/networkmanage > >r- 0.7/manager.h:35: Error: Undefined interface > > [...] > > automoc4: process > > for > > /data/development/build/kde-trunk/kdebase/workspace/solid/networkmanager- > >0. 7/manager.moc failed: Unknown error > > pid to wait for: 0 > > processes in queue: 11 > > > > > > The problem is this line in manager.h: > > #include <solid/control/ifaces/networkmanager.h> > > > > This picks up the installed networkmanager.h instead of the one from > > kdebase/workspace/libs/solid/control/ifaces . > > > > I tried to add > > ${CMAKE_SOURCE_DIR}/workspace/libs > > to the include_directories, but seems that this is ignored or searched > > after the system path. > > > > So the solution to build kdebase is to remove your installed version and > > build again.This also does not work if e.g you have KDE 4.0.x installed > > in /usr like it is on openSUSE. So you have to: > > - remove the old files (e.g from /opt/kde4/include if KDE trunk was > > installed there) > > - build AND install kdebase/workspace/libs/solid (so the correct headers > > are installed to /opt/kde4) > > - build now kdebase/workspace/solid > > > > I find this behavior broken, automoc4 should find the header files that > > are in kdebase/workspace/libs/solid/control/ifaces as specified by the > > include_directory command. > > automoc4 uses the include directories as specified by include_directory. At > least that's what I wrote and expect the code to do. :-) > > Take a look at the generated <target>_automoc.cpp.files file. Its second > line contains all the include directories as they'll get passed to moc. > This line gets generated by the configure_files call in Automoc4.cmake.
CMake sorts the include dirs internally, so that in-project include dirs are always before out-of-project include dirs. (if CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE is true, done in kdelibs/cmake/modules/KDE4Defaults.cmake) Maybe this has to be added for automoc ? Alex _______________________________________________ Kde-buildsystem mailing list [email protected] https://mail.kde.org/mailman/listinfo/kde-buildsystem
