caching behavior

Alexander Neundorf neundorf at kde.org
Tue Nov 17 19:46:13 CET 2009


Hi Andreas,

On Tuesday 17 November 2009, Andreas Hartmetz wrote:
> Hi,
>
> mjansen's mail about caching in FindTaglib.cmake reminded me of something:
> FindFoo.cmake modules often like to cache the fact that something is *not*
> present. CMake also caches install locations and library versions and never
> re-checks if they are still current.

Yes, to save time.

> The effect is that one needs to delete the cache manually way too often. I
> think other build systems handle this better (is this actually true
> though?). I'd like to ask the experts if this overzealous caching behavior
> can be fixed 

Well, not everybody would agree that the current behaviour is broken...

> without every build taking ages to re-check everything. Or 
> maybe auto*'s approach is a good idea: make it possible to rerun configure
> (in our case cmake), possibly with a flag to recheck everything, if in
> doubt. 

Where's the difference to deleting the cache in that case ?

> currently one has to delete CMakeCache.txt first 

You could also run cmake-gui, which makes it easy to delete just the entries 
you want. You can also run cmake -U to undefine a set of variables from the 
cache (or edit the cache file manually).

> and retype or copy and paste all the -D* options every time. 

Which -D options do you need ? I usually only need CMAKE_INSTALL_PREFIX and 
maybe CMAKE_BUILD_TYPE. 
If you need many more options in many cases, maybe something else needs to be 
changed.

> auto* has ./config.status.
> In my experience CMake newbies are regularly confused by the unexpected
> caching behavior and ask for help on IRC.

What exactly is unexpected ? That variables are not rechecked if they were 
found once successfully ?

Alex


More information about the Kde-buildsystem mailing list