[CMake] Re: Re: FindQt4 in 2.4.8 bug

Bill Hoffman bill.hoffman at kitware.com
Fri Feb 1 09:52:45 EST 2008


Fernando Cacciola wrote:
> Hi Bill,
> 
>> Can you add a :
> 
> Better let me start over,  I think I know what's going on now.
> 
> Maybe is the intended behaviour. If it is, I think is quite odd.
> 
> 
> Consider the following simple script:
> 
> set ( var "whatever" CACHE PATH "" )
> message ( STATUS "${var}" )
> 
> I would expect to see "whatever" as the value of var since it is being 
> explicitely set, but that's not neccesarily what happens: if the cache 
> *already* contains a value for var, say "xyz", then that value sticks 
> and var is just never set to "whatever" unless FORCE is added (as I 
> found out and reported eariler in this thread)
> 
> Is this the expected behaviour?
> 
> If it is, then it leads to a problem when SET is used for example like 
> this:
> 
> set ( QT_INCLUDE_DIR ${qt4_include_dir}  CACHE PATH "" )
> 
> because if at some earlier run qt4 was actually not found, 
> QT_INCLUDE_DIR gets set to NOTFOUND and once there it is never reset to 
> the include path even if qt4 is properly found later. The only way out 
> this tirany is to delete the cache and star over.
> 
> IMO the rule that says "do not override exisitng cache values unless 
> FORCE is specified" should be relaxed to have "null values" be always 
> overwritten.
> 
> Or at the very least there should be a FORCE_IF_NULL option, because it 
> makes no sense at all to keep a NOTFOUND value for an INCLUDE_DIR when 
> the right path is available.
> 
> Best
> 
> 

OK, I get it now...   So, the FIND_* stuff will set a value if it is 
NOTFOUND.  However, the set command will not.  I am thinking it should. 
     I am not sure what that will break, but it would be consistent with 
FIND_*.

This should not be a problem if you start from a clean build tree for 
FindQt4.cmake, as QT_INCLUDE_DIR will never get put in the cache as 
NOTFOUND by the current FindQt4.cmake.   So, I think this is something 
we can fix in CMake 2.6.    Feel free to create a feature request, "set 
CACHE should set NOTFOUND variables".

Thanks for tracking this down.

-Bill



More information about the CMake mailing list