Changes do not apply when changing an option variable

How are you changing them? If it is:

option(varname "docs" ON)
#                     ^^ here

This is the default for the option. If the cache variable already exists, it is not updated. CMake has no mechanism to know “user set it to OFF” versus “the old default was OFF” when seeing this code.

See this post: Project variants? - #5 by ben.boeckel