[CMake] Question about variables, cache, and scope

Glenn Coombs glenn.coombs at gmail.com
Tue Oct 11 12:16:46 EDT 2011


Doh :-)  Thanks for pointing out what should perhaps have been obvious in
retrospect.  Cache variables are one of the more confusing areas of cmake.

--
Glenn

On 10 October 2011 22:38, Bill Hoffman <bill.hoffman at kitware.com> wrote:

> On 10/10/2011 3:52 PM, Robert Dailey wrote:
>
>> Yes, this works perfectly.
>>
>> It's a bit disappointing that cache variables are, for all intents and
>> purposes, read-only in functions. The property approach is a bit more
>> verbose but it functions! I think 'set' needs a new override
>> specifically for cases like this. Something similar to "PARENT_SCOPE",
>> but something like "CACHE_SCOPE", that forces CMake to first check for
>> the existance of a cache variable with that name, and it would take
>> precedence over any identically named variable in function scope.
>>
>> On another note, you'd think this would work too but it doesn't:
>>
>> set( project_count ${new_count} CACHE INTERNAL FORCE )
>>
>>
> This works:
>
>
> set( project_count 0 CACHE INTERNAL "")
> function( define_project )
>
>   math( EXPR count "${project_count}+1" )
>   set( project_count ${count} CACHE INTERNAL "")
> endfunction()
> define_project()
> message(${project_count})
> define_project()
> message(${project_count})
> define_project()
> message(${project_count})
>
> It prints out
> 1
> 2
> 3
>
> -Bill
>
> --
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/**
> opensource/opensource.html<http://www.kitware.com/opensource/opensource.html>
>
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/**CMake_FAQ<http://www.cmake.org/Wiki/CMake_FAQ>
>
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/**listinfo/cmake<http://www.cmake.org/mailman/listinfo/cmake>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20111011/ff0d6462/attachment.htm>


More information about the CMake mailing list