On Friday 22 February 2008, Brad King wrote:
> David Faure wrote:
> > Sorry, me again :)
> > 
> > With cmake cvs from today, when I modify a header file, the corresponding 
> > .cpp file (which obviously includes it)
> > doesn't get recompiled !?!?
> > 
> > I tried touching the CMakeLists.txt in that dir, I tried forcing a 
> > recompile of foo.cpp
> > (to let it recompute dependencies if that's when it happens),
> > but after that the same happens: changing the header file triggers no 
> > recompilation.
> 
> I cannot reproduce this.  Everything rebuilds correctly for me.
> 
> Did you start with a fresh build tree or run CMake from CVS on a tree
> initially generated by 2.4?  

It was an old tree indeed (that's why I tried forcing stuff but it didn't help).

> What generator are you using?

Makefiles.

> If you're using the Makefiles generator, look in the build tree under
> "CMakeFiles/<target-not-rebuilding>.dir".  There should be files like
> "depend.make" and "CXX.includecache".  Please send them to me.

CMakeFiles/kdecore.dir/depend.make is empty ("# Empty dependencies files, # 
This may be replaced when dependencies are built")
CXX.includecache is up at http://web.davidfaure.fr/tmp/CXX.includecache  
(strange syntax, is the "target" the first line after an empty line?)

My testcase is: 

touch sycoca/ksycocafactory.h ; make

and I see

[  0%] Generating kdecore_automoc.cpp
[  0%] Building CXX object kdecore/CMakeFiles/kdecore.dir/kdecore_automoc.cpp.o
Linking CXX shared library ../lib/libkdecore.so

instead of

makeobj[0]: Entering directory `/d/kde/build/4/kdelibs/kdecore'
[  0%] Generating kdecore_automoc.cpp
[  0%] Building CXX object kdecore/CMakeFiles/kdecore.dir/kdecore_automoc.cpp.o
[  0%] Building CXX object 
kdecore/CMakeFiles/kdecore.dir/sycoca/ksycocafactory.cpp.o
[and plenty others]
Linking CXX shared library ../lib/libkdecore.so

> Can you reproduce it in a new build tree? 
OK, that was it.
I deleted the kdecore build dir and ran cmake again, and now it works as 
expected.

Dependee "/d/kde/src/4/kdelibs/kdecore/sycoca/ksycocafactory.h" is newer than 
depender "kdecore/CMakeFiles/kdecore.dir/services/kmimetype.cpp.o".
Dependee "/d/kde/src/4/kdelibs/kdecore/sycoca/ksycocafactory.h" is newer than 
depender "kdecore/CMakeFiles/kdecore.dir/services/kmimetypefactory.cpp.o".
Dependee "/d/kde/src/4/kdelibs/kdecore/sycoca/ksycocafactory.h" is newer than 
depender "kdecore/CMakeFiles/kdecore.dir/services/kmimetypetrader.cpp.o".
Dependee "/d/kde/src/4/kdelibs/kdecore/sycoca/ksycocafactory.h" is newer than 
depender "kdecore/CMakeFiles/kdecore.dir/services/kservice.cpp.o".
[...]
Dependee "/d/kde/src/4/kdelibs/kdecore/sycoca/ksycocafactory.h" is newer than 
depender "kdecore/CMakeFiles/kdecore.dir/sycoca/ksycoca.cpp.o".
Dependee "/d/kde/src/4/kdelibs/kdecore/sycoca/ksycocafactory.h" is newer than 
depender "kdecore/CMakeFiles/kdecore.dir/sycoca/ksycocafactory.cpp.o".
and then it works fine.

Maybe cmake could do like Qt's moc and say "this build tree was generated with 
cmake-2.4, you need to delete it and regenerate it to use this version of 
cmake" or something like that?

-- 
David Faure, [EMAIL PROTECTED], sponsored by Trolltech to work on KDE,
Konqueror (http://www.konqueror.org), and KOffice (http://www.koffice.org).
_______________________________________________
Kde-buildsystem mailing list
[email protected]
https://mail.kde.org/mailman/listinfo/kde-buildsystem

Reply via email to