Alexander Neundorf wrote:
On Monday 11 May 2009, Bill Hoffman wrote:
So, CMake has done what it does now from the start.   There was a short
period of time when it did not, and that was when a re-write was done,
and it quickly broke some existing projects.  Here is the thread:

Yes, I can imagine that.
Still the current behaviour is not very intuitive, especially that set(CACHE) in the first cmake run overrides the "visible" variable, while the set(CACHE) in the second run basically does nothing, and so the value of the "visible" variable is different. I think for CMake 2.8 or 3.0 it would be a good idea to make this more consistent and easier to understand (especially since now more and more people are using cmake).

http://www.cmake.org/pipermail/cmake/2007-March/013204.html

I think the rule should be if you want to change a variable you have to
have the set AFTER the variable, or use CACHE INTERNAL.

What do you mean exactly with "have the set after the variable" ?
Have the set(FOO <value>) after the set(FOO <value> CACHE), or something else ?


Yes,

This always has worked as expected:

set(FOO 2 CACHE)
set(FOO 1)  # this is always the value

However, I think your change is OK. Basically if the set CACHE comes after the set, it will always set the value. We do need a policy for this, but it should be easy to detected. You will have to see if the REMOVE is going to do anything. I wonder how many warnings that policy will cause... I guess we could create the policy code, and try it on VTK, Boost, SecondLife, and some other big projects to see what happens...

-Bill
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
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

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to