David Faure wrote:
> I have seen this problem multiple times, but I'm not sure something can be 
> done about it...
> Basically the first time "make" is run, if it triggers a cmake run, then the 
> new dependencies
> are not taken into account. They are only when running make again.
 >
> Example: branches/work/kdelibs4_snapshot was just updated with 2 weeks worth
> of trunk/KDE/kdelibs changes, including the renaming of the 
> ksortablevaluelist.h header. Typing make gave:
> make[2]: *** No rule to make target 
> `/d/kde/src/4/kdelibs4_snapshot/kdecore/ksortablevaluelist.h', needed by 
> `kdeui/tests/CMakeFiles/kcomboboxtest.dir/kcomboboxtest.o'.  Stop.

Did this acutally cause CMake to run again?  Did you really run just 
"make" or perhaps a "make my-target"?

I just created a small project, built it, renamed a header, and built 
again and it worked.  There is something else going on here.

> Typing make again gave:
> [...]
> Dependee "/d/kde/src/4/kdelibs4_snapshot/kdecore/ksortablevaluelist.h" does 
> not exist for depender 
> "kdeui/tests/CMakeFiles/kcompletiontest.dir/kcompletioncoretest.o".
> [...]
> and this time there was no problem.

This looks like it ran cmake again and built correctly in the same make run.

> Is this a problem like "make launches cmake which regenerates makefiles but 
> then make
> doesn't use the new makefiles"? iirc there are solutions to this problem in 
> general but I forgot
> which, I think coolo knows more.

The basic makefile structure looks like this:

all: cmake_check_build_system
   ...recursive make to do real build...

cmake_check_build_system:
   ...run cmake to fix dependencies for missing headers...

The recursive make call makes sure the new makefiles are used whether or 
not make is smart enough to reload them.

-Brad
_______________________________________________
Kde-buildsystem mailing list
[email protected]
https://mail.kde.org/mailman/listinfo/kde-buildsystem

Reply via email to