¿Cuál es la diferencia entre las compilaciones Debug y Release en CMake y cómo configurarlas correctamente?
¡Hola! Acabo de empezar a aprender CMake para mis proyectos de C++ y no puedo entender la diferencia entre las configuraciones Debug y Release. En Visual Studio estoy acostumbrado a seleccionar el modo de compilación, mientras que en CMake se usa `CMAKE_BUILD_TYPE`.
Escribí un CMakeLists.txt simple:
```cmake
cmake_minimum_required(VERSION 3.10)
project(MyProject)
add_executable(myapp main.cpp)
```
Y compilo así:
```bash
mkdir build && cd build
cmake ..
cmake --build .
```
Pero no especifico `-DCMAKE_BUILD_TYPE=Debug` o `Release`. ¿Qué sucede entonces? ¿Cuál es la compilación por defecto? Y lo más importante: ¿cómo configurar correctamente diferentes flags de compilación para Debug (con información de depuración, sin optimizaciones) y Release (con optimizaciones, sin información de depuración)?
He oído que en CMake hay variables integradas como `CMAKE_CXX_FLAGS_DEBUG` y `CMAKE_CXX_FLAGS_RELEASE`, pero no entiendo cómo usarlas. También me interesa saber cómo hacer que en modo Debug se habiliten los assert y en Release no.