On 27.11.18 17:13, Eric Noulard wrote:
Le mar. 27 nov. 2018 à 14:50, Mario Emmenlauer <ma...@emmenlauer.de <mailto:ma...@emmenlauer.de>> a écrit :
    Dear all,

    I've just discovered that option() behaves differently than I anticipated.
    After reading the docs and searching with google I'm still confused how to
    achieve my desired behaviour.

    What I've just learned is that unspecified options take their cached value
    and do *not* go back to their default value, if a cache exists. I assumed
    that options take their default when not explicitly specified.


The behavior of option() gained new behavior in CMake 3.13.
May be it could help in your particular case: https://cmake.org/cmake/help/v3.13/policy/CMP0077.html#policy:CMP0077

you'll depend on latest CMake though.


    Now my problem: I could not find a way to get the behaviour I'd like. Is it
    possible to enforce the default for an option when its not specified by the
    user, even if a cache exists?


You mean you did not manage to force the cache value?
You can:
set(VAR "default_value" CACHE FORCE)

or the problem is you cannot know whether if a value has been user-provided?

Sorry, I was not very precise! Your last point is the problem. I fail to know
when the option was user-provided and when it was cache-provided.

So here is what I'd like:

#> grep MYOPT CMakeLists.txt
option(MYOPT "Description" OFF)
#> cmake              # I want the option disabled, this works fine.
#> cmake -DMYOPT=ON   # I want the option enabled, this works fine.
#> cmake              # I want the option disabled (back to default),
                      # but I observe the option taken from cache, enabled.

Is there some way to achieve my desired behaviour? I tried without success
unset(MYOPT), unset(MYOPT CACHE), and set(MYOPT OFF) before option(), but
they all lead to different behaviour.

All the best,

    Mario

--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

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

Reply via email to