Hi Doug,

your syntax for `set()` in Foo is incorrect; you're actually setting a
non-cache variable OPT1 do the value "ON;FORCE".

You want to set the *cache* variable OPT1, which would be done like this:

  set(OPT1 ON CACHE BOOL "Set to OFF|ON (default is OFF) to control build
of Bar library" FORCE)

Petr

On 20 May 2016 at 11:24, Doug Cuthbertson <doug.cuthbert...@gmail.com>
wrote:

>
> CMake (version 3.5.2) surprised me with how it's passing values to
> sub-projects, so I was wondering if this is expected behavior. Here's an
> example of what I mean. Let's say I have a project Foo in a directory of
> the same name. It contains a third-party library called Bar which has a
> CMakeLists.txt file that looks like:
>
>     cmake_minimum_required(VERSION 2.8.12)
>
>     option(OPT1
>       "Set to OFF|ON (default is OFF) to control build of Bar library" OFF)
>
>     if(OPT1)
>       message("Bar: OPT1 is on")
>     else(OPT1)
>       message("Bar: OPT1 is off")
>     endif(OPT1)
>
> I then create CMakeLists.txt for Foo that sets OPT1 to ON and includes Bar:
>
>     cmake_minimum_required(VERSION 2.8.12)
>
>     set(OPT1 ON FORCE)
>     if(OPT1)
>       message("Foo: OPT1 is on")
>     else(OPT1)
>       message("Foo: OPT1 is off")
>     endif(OPT1)
>     add_subdirectory(Bar)
>
> The first time I run cmake the message output is:
>
>     Foo: OPT1 is on
>     Bar: OPT1 is off
>
> If I run cmake again, I get:
>
>     Foo: OPT1 is on
>     Bar: OPT1 is on
>
> If this is expected behavior, is there any way I can ensure Bar receives
> the value of OPT1 the first time? It makes a huge difference when the
> option controls, for example, whether a static or dynamic library will be
> built.
>
> Thanks,
> Doug
>
> --
>
> 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:
> http://public.kitware.com/mailman/listinfo/cmake
>
-- 

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:
http://public.kitware.com/mailman/listinfo/cmake

Reply via email to