Calling FindQt4 and FindKDE4 multiple times

Alexander Neundorf neundorf at
Fri Oct 5 17:46:23 CEST 2007

On Thursday 04 October 2007 15:28, David Faure wrote:
> What do you think about this patch?
> It reduces the debug output (and the time, a little bit) when configuring
> extragear from the toplevel. Because it's possible to configure it globally
> or each subdir separately, each subdir calls find_package(KDE4 REQUIRED) so
> the output looks like a large mess with the multiple lines of output
> related "looking for Qt4" and "looking for KDE4" repeated 9 times.
> KDE4_FOUND and QT4_FOUND don't go into the cache, so I think this change is
> correct, it only makes a difference when find_package is done multiple
> times. (Maybe cmake itself could remember the packages called, and notice
> "OK I have done find_package(KDE4 REQUIRED) already once, no need to do it
> again"?)

Hmm, not sure.

E.g. in FindQt4.cmake there is a QT_MIN_VERSION, where the user can adjust the 
required version of Qt4.

So e.g. toplevel could do:

set(QT_MIN_VERSION 4.0.0)

while in some other subdir 
set(QT_MIN_VERSION 4.3.0) 
might be used.

The same for the arguments like "REQUIRED", the subcomponents etc., so all 
this needs to be handled by the patch. FindQt4.cmake is already complicated 

So, what I can say is, that if you commit this, this is a change will not go 
into cmake cvs, because it can break things. I would prefer if the 
FindQt4.cmake versions in KDE and cmake don't get to different (they are 
already different enough now).

So the patch will work in the common case but has the potential to break 
stuff. Is the optimization measurable ?
If it's not significant I'd say due to the potential to break stuff this 
should not be committed.


P.S. for the optimization: run cmake with cachegrind. I found that there are 
two "big" functions: one is the parsing (not sure anything can be done there 
since this is generated code) and the other one was something like 
IsSubDirectory(), can't remember exactly right now

More information about the Kde-buildsystem mailing list