[CMake] Re: Re: Re: FindQt4 in 2.4.8 bug

Fernando Cacciola fernando.cacciola at gmail.com
Fri Feb 1 13:47:00 EST 2008


Hi Bill,

>> behaviour. Don't break that as you can always use
>>  if (NOT DEFINED VAR)
>>    set (VAR "foo" CACHE ...... FORCE)
>>
>
> But:
>
> find_library(FOO_VAR foo)
>
> This will set FOO_VAR (in the cache) if it is not set
>
> or if the value has -NOTFOUND in it.
>
I just tried it and find_path (didn't try find_library but find_path) will 
not set it if the cache has -NOTFOUND in it.
Please try yourself because I think this one is unexpected, and 
undocumented.

But let's say I did the test wrong (hopefully) and it is as you said.
Even then this is much more important IMO:

set(FOO_VAR somevalue)

and

set(FOO_VAR somevalue CACHE TYPE "")

are inconsistent.

That's much harder to understand.

Also, the SET documention only mentions the critically important fact that 
cached values are not overwritten by default when the FORCE option is 
explained. IMO this is the wrong way to document such an odd behaviour for a 
command named SET (I don't think I ever seen a language with such a 
behaviour, and I've been in this business for a long long time).
At the very least that fact should be stated up front.

Best

Fernando 




More information about the CMake mailing list