# CMake doesn't change value of all specified cache variables at once

**URL:** https://discourse.cmake.org/t/cmake-doesnt-change-value-of-all-specified-cache-variables-at-once/1471
**Category:** Usage
**Created:** [July 1, 2020, 1:42pm UTC](https://discourse.cmake.org/t/cmake-doesnt-change-value-of-all-specified-cache-variables-at-once/1471 "2020-07-01T13:42:26Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![OntheRocks](https://discourse.cmake.org/user_avatar/discourse.cmake.org/ontherocks/32/717_2.png) [@OntheRocks](https://discourse.cmake.org/u/OntheRocks)
#### Post date: [July 1, 2020, 1:42pm UTC](https://discourse.cmake.org/t/cmake-doesnt-change-value-of-all-specified-cache-variables-at-once/1471/1 "2020-07-01T13:42:26Z")

</div>

I am trying to build google flatbuffers ([https://github.com/google/flatbuffers](https://github.com/google/flatbuffers)) in Linux. I need to change the default values of some cache variables after generating the makefile. However to change all of them I need to execute the cmake command twice. Once to change the advanced variables and then again to chance the non-advanced variables (in no particular order). I cannot change them in one go. Why is this so?  
Steps:

1. cmake … -G “Unix Makefiles”

2. cmake -LA .  
– Configuring done  
– Generating done  
– Build files have been written to: /flatbuffers-1.10.0/linux\_build  
– Cache values  
CMAKE\_ADDR2LINE:FILEPATH=/bin/addr2line  
CMAKE\_AR:FILEPATH=/bin/ar  
CMAKE\_BUILD\_TYPE:STRING=  
CMAKE\_COLOR\_MAKEFILE:BOOL=ON  
CMAKE\_CXX\_COMPILER:FILEPATH=/bin/c++  
CMAKE\_CXX\_COMPILER\_AR:FILEPATH=/bin/gcc-ar  
CMAKE\_CXX\_COMPILER\_RANLIB:FILEPATH=/bin/gcc-ranlib  
CMAKE\_CXX\_FLAGS:STRING=  
CMAKE\_CXX\_FLAGS\_DEBUG:STRING=-g  
CMAKE\_CXX\_FLAGS\_MINSIZEREL:STRING=-Os -DNDEBUG  
CMAKE\_CXX\_FLAGS\_RELEASE:STRING=-O3 -DNDEBUG  
CMAKE\_CXX\_FLAGS\_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG  
CMAKE\_C\_COMPILER:FILEPATH=/bin/cc  
CMAKE\_C\_COMPILER\_AR:FILEPATH=/bin/gcc-ar  
CMAKE\_C\_COMPILER\_RANLIB:FILEPATH=/bin/gcc-ranlib  
CMAKE\_C\_FLAGS:STRING=  
CMAKE\_C\_FLAGS\_DEBUG:STRING=-g  
CMAKE\_C\_FLAGS\_MINSIZEREL:STRING=-Os -DNDEBUG  
CMAKE\_C\_FLAGS\_RELEASE:STRING=-O3 -DNDEBUG  
CMAKE\_C\_FLAGS\_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG  
CMAKE\_DLLTOOL:FILEPATH=CMAKE\_DLLTOOL-NOTFOUND  
CMAKE\_EXE\_LINKER\_FLAGS:STRING=  
CMAKE\_EXE\_LINKER\_FLAGS\_DEBUG:STRING=  
CMAKE\_EXE\_LINKER\_FLAGS\_MINSIZEREL:STRING=  
CMAKE\_EXE\_LINKER\_FLAGS\_RELEASE:STRING=  
CMAKE\_EXE\_LINKER\_FLAGS\_RELWITHDEBINFO:STRING=  
CMAKE\_EXPORT\_COMPILE\_COMMANDS:BOOL=  
CMAKE\_INSTALL\_BINDIR:PATH=bin  
CMAKE\_INSTALL\_DATADIR:PATH=  
CMAKE\_INSTALL\_DATAROOTDIR:PATH=share  
CMAKE\_INSTALL\_DOCDIR:PATH=  
CMAKE\_INSTALL\_INCLUDEDIR:PATH=include  
CMAKE\_INSTALL\_INFODIR:PATH=  
CMAKE\_INSTALL\_LIBDIR:PATH=lib64  
CMAKE\_INSTALL\_LIBEXECDIR:PATH=libexec  
CMAKE\_INSTALL\_LOCALEDIR:PATH=  
CMAKE\_INSTALL\_LOCALSTATEDIR:PATH=var  
CMAKE\_INSTALL\_MANDIR:PATH=  
CMAKE\_INSTALL\_OLDINCLUDEDIR:PATH=/usr/include  
CMAKE\_INSTALL\_PREFIX:PATH=/usr/local  
CMAKE\_INSTALL\_RUNSTATEDIR:PATH=  
CMAKE\_INSTALL\_SBINDIR:PATH=sbin  
CMAKE\_INSTALL\_SHAREDSTATEDIR:PATH=com  
CMAKE\_INSTALL\_SYSCONFDIR:PATH=etc  
CMAKE\_LINKER:FILEPATH=/bin/ld  
CMAKE\_MAKE\_PROGRAM:FILEPATH=/bin/gmake  
CMAKE\_MODULE\_LINKER\_FLAGS:STRING=  
CMAKE\_MODULE\_LINKER\_FLAGS\_DEBUG:STRING=  
CMAKE\_MODULE\_LINKER\_FLAGS\_MINSIZEREL:STRING=  
CMAKE\_MODULE\_LINKER\_FLAGS\_RELEASE:STRING=  
CMAKE\_MODULE\_LINKER\_FLAGS\_RELWITHDEBINFO:STRING=  
CMAKE\_NM:FILEPATH=/bin/nm  
CMAKE\_OBJCOPY:FILEPATH=/bin/objcopy  
CMAKE\_OBJDUMP:FILEPATH=/bin/objdump  
CMAKE\_RANLIB:FILEPATH=/bin/ranlib  
CMAKE\_READELF:FILEPATH=/bin/readelf  
CMAKE\_SHARED\_LINKER\_FLAGS:STRING=  
CMAKE\_SHARED\_LINKER\_FLAGS\_DEBUG:STRING=  
CMAKE\_SHARED\_LINKER\_FLAGS\_MINSIZEREL:STRING=  
CMAKE\_SHARED\_LINKER\_FLAGS\_RELEASE:STRING=  
CMAKE\_SHARED\_LINKER\_FLAGS\_RELWITHDEBINFO:STRING=  
CMAKE\_SKIP\_INSTALL\_RPATH:BOOL=NO  
CMAKE\_SKIP\_RPATH:BOOL=NO  
CMAKE\_STATIC\_LINKER\_FLAGS:STRING=  
CMAKE\_STATIC\_LINKER\_FLAGS\_DEBUG:STRING=  
CMAKE\_STATIC\_LINKER\_FLAGS\_MINSIZEREL:STRING=  
CMAKE\_STATIC\_LINKER\_FLAGS\_RELEASE:STRING=  
CMAKE\_STATIC\_LINKER\_FLAGS\_RELWITHDEBINFO:STRING=  
CMAKE\_STRIP:FILEPATH=/bin/strip  
CMAKE\_VERBOSE\_MAKEFILE:BOOL=FALSE  
FLATBUFFERS\_BUILD\_FLATC:BOOL=ON  
FLATBUFFERS\_BUILD\_FLATHASH:BOOL=ON  
FLATBUFFERS\_BUILD\_FLATLIB:BOOL=ON  
FLATBUFFERS\_BUILD\_GRPCTEST:BOOL=OFF  
FLATBUFFERS\_BUILD\_SHAREDLIB:BOOL=OFF  
FLATBUFFERS\_BUILD\_TESTS:BOOL=ON  
FLATBUFFERS\_CODE\_COVERAGE:BOOL=OFF  
FLATBUFFERS\_INSTALL:BOOL=ON  
FLATBUFFERS\_LIBCXX\_WITH\_CLANG:BOOL=ON  
GIT:FILEPATH=/bin/git

3. cmake -DFLATBUFFERS\_BUILD\_FLATC=OFF -DFLATBUFFERS\_BUILD\_FLATHASH=OFF -DFLATBUFFERS\_BUILD\_SHAREDLIB=ON -DFLATBUFFERS\_BUILD\_TESTS=OFF -DFLATBUFFERS\_INSTALL=OFF -DFLATBUFFERS\_LIBCXX\_WITH\_CLANG=OFF **-DCMAKE\_C\_COMPILER=/opt/rh/devtoolset-7/root/usr/bin/gcc -DCMAKE\_CXX\_COMPILER=/opt/rh/devtoolset-7/root/usr/bin/g++** -DCMAKE\_BUILD\_TYPE=Release .

At the above step only the advanced variables (marked in bold) are modified. I have to issue the command again with just the non-advanced variables to change their values

1. cmake -DFLATBUFFERS\_BUILD\_FLATC=OFF -DFLATBUFFERS\_BUILD\_FLATHASH=OFF -DFLATBUFFERS\_BUILD\_SHAREDLIB=ON -DFLATBUFFERS\_BUILD\_TESTS=OFF -DFLATBUFFERS\_INSTALL=OFF -DFLATBUFFERS\_LIBCXX\_WITH\_CLANG=OFF -DCMAKE\_BUILD\_TYPE=Release .

---

<div class="post-metadata">

### Author: ![ben.boeckel](https://discourse.cmake.org/letter_avatar_proxy/v4/letter/b/ea5d25/32.png) [@ben.boeckel](https://discourse.cmake.org/u/ben.boeckel)
#### Post date: [November 11, 2020, 2:57pm UTC](https://discourse.cmake.org/t/cmake-doesnt-change-value-of-all-specified-cache-variables-at-once/1471/2 "2020-11-11T14:57:13Z")

</div>

You’re setting the compiler after the initial configure. This causes CMake to ignore the `CMakeCache.txt` and start from scratch. There should be a message to this effect. You should really pass the compilers on the first configure (when you pass the `-G`).
