I'm unable to repro this – configuring once and then reconfiguring with a different -DCMAKE_BUILD_TYPE= does the right thing for me. What's your exact invocation?
If you're setting it from a cache file, you'll need to use FORCE in the set in your cache file to override any existing cache setting.
>> If I've configured a Release build, build it and then go back and re-run
>> cmake with -DCMAKE_BUILD_TYPE=Debug (and nothing else changed), almost
>> nothing gets rebuilt when I try to build. Is this expected? I know I
>> can edit CMakeCache.txt directly and trigger an essentially full
> IME rerunning CMake with new options really does nothing; CMakeCache.txt
> appears to override the command line, which is not intuitive but seems
> to be how it actually works.
I thought so too at first, except changing LLVM_TARGETS_TO_BUILD when
re-running CMake does indeed cause any new targets to be built. So it
can't be the case that the cache overrides everything.
> I would hope that this is not a choice made by the LLVM project but a
> bug/feature of CMake itself. But I haven't ever had the energy to
> pursue it.
https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_docs_CMake.html-23cmake-2Dcaches&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=QX_nCpK2peaty_XOC8I0mM2FCcsrB0u93ckBWasLzfU&s=krJ8pnxDwobl6hQ3IB_hpM54u0pvD5MU-Ft5l6EL__4&e= seems to imply that -D
options should override cache values, but it doesn't for