[CMake] Problem with option() when in subdirectory

Alexander Neundorf a.neundorf-work at gmx.net
Sun Sep 18 08:32:33 EDT 2011


On Sunday, September 18, 2011 02:15:54 PM David Demelier wrote:
> Hello,
> 
> I noticed that option() values are not checked when the option() command
> is under a add_subdirectory() target.
> 
> Example:
> 
> 
> -- a's CMakeLists.txt --
> project(a C)
> 
> set(BUILD_DEMOS OFF)
> add_subdirectory(extern/b)
> 
> -- extern/b's CMakeLists.txt --
> project(b C)
> 
> option(BUILD_DEMOS "Enable the demos build" ON)
> 
> if (BUILD_DEMOS)
> 	...
> endif ()
> 
> Then when building the project a it will also enter the if BUILD_DEMOS
> conditional.
> 
> What can I do now? :)

The values of options are stored in the cache.
In your toplevel file, OFF is put in the cache.
Then, in the subdir, the variable of BUILD_DEMOS is already in the cache, so 
it is not overridden with ON, but keeps the value which is in the cache.

Does that help ?

Alex



More information about the CMake mailing list