[CMake] What does `cross-platform' mean?

Bill Hoffman bill.hoffman at kitware.com
Mon Nov 10 10:38:23 EST 2008


Miguel A. Figueroa-Villanueva wrote:
es.
>>
>> - Add an easy way to create dependent cache variables, that when changed
>> unset a number of other variables.
> 
> A while back I had opened a feature request on the third item:
> 
> http://public.kitware.com/Bug/view.php?id=7286
> 
> I think it is a fairly simple thing to implement if no speed issues
> are considered, which I don't think these would be a problem. That is,
> save the cache before the configure iteration and check if the entries
> listed in the dependencies list have changed. If so, reset the cache
> entry.
> 
I am not sure I understand how your DEPEND keyword would work?

BTW, this type of thing can be done by using two cache variables right 
now.   For example from FindQt4.cmake:

   IF(QT_QMAKE_EXECUTABLE_LAST AND NOT QT_QMAKE_EXECUTABLE_LAST MATCHES 
"^${QT_QMAKE_EXECUTABLE}$")
     SET(QT_QMAKE_CHANGED 1)
   ENDIF(QT_QMAKE_EXECUTABLE_LAST AND NOT QT_QMAKE_EXECUTABLE_LAST 
MATCHES "^${QT_QMAKE_EXECUTABLE}$")

   SET(QT_QMAKE_EXECUTABLE_LAST "${QT_QMAKE_EXECUTABLE}" CACHE INTERNAL 
"" FORCE)

I think what is needed is a more general way to add dependent cache 
variables.

check_cache_depend(VAR1 DVAR1 DVAR2 DVAR3 DVAR4)

If VAR1 changes in the cache from a previous value, then DVAR1, DVAR2, 
DVAR3, and DVAR4 are all removed from the cache.   You would put 
something like that at the top of a FindFoo.cmake module.  For Qt it 
would be:

check_cache_depend(QT_QMAKE_EXECUTABLE QT_QTDESIGNERCOMPONENTS_INCLUDE_DIR
QT_QTDESIGNERCOMPONENTS_LIBRARY_RELEASE
...)

-Bill


More information about the CMake mailing list