[CMake] Re-configuring Debug and Release builds

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
rebuild.

                             -David

From: llvm-dev [mailto:llvm-dev-bounces@lists.llvm.org] On Behalf Of David
Greene via llvm-dev
Sent: Friday, March 08, 2019 10:49 AM
To: llvm-dev@lists.llvm.org
Subject: [llvm-dev] [CMake] Re-configuring Debug and Release builds

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
rebuild.

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 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.
--paulr

<paul.robinson@sony.com> writes:

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
rebuild.

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://llvm.org/docs/CMake.html#cmake-caches seems to imply that -D
options should override cache values, but it doesn't for
CMAKE_BUILD_TYPE.

                               -David