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