Qual é a diferença entre as builds Debug e Release no CMake e como configurá-las corretamente?
Olá! Comecei a aprender CMake para meus projetos C++ e não consigo entender a diferença entre as configurações Debug e Release. No Visual Studio, estou acostumado a selecionar o modo de build, enquanto no CMake usa-se `CMAKE_BUILD_TYPE`.
Escrevi um CMakeLists.txt simples:
```cmake
cmake_minimum_required(VERSION 3.10)
project(MyProject)
add_executable(myapp main.cpp)
```
E compilo assim:
```bash
mkdir build && cd build
cmake ..
cmake --build .
```
Mas não especifico `-DCMAKE_BUILD_TYPE=Debug` ou `Release`. O que acontece então? Qual é o build padrão? E o mais importante — como configurar corretamente diferentes flags de compilação para Debug (com informação de debug, sem otimizações) e Release (com otimizações, sem informação de debug)?
Ouvi dizer que no CMake existem variáveis embutidas como `CMAKE_CXX_FLAGS_DEBUG` e `CMAKE_CXX_FLAGS_RELEASE`, mas não entendo como usá-las. Também estou interessado em saber como fazer com que os asserts sejam ativados no modo Debug e desativados no Release. E