Con CMake, generalmente se recomienda hacer una compilación "fuera de la fuente" . Crea tu CMakeLists.txt
en la raíz de tu proyecto. Luego, desde la raíz de su proyecto:
mkdir Release
cd Release
cmake -DCMAKE_BUILD_TYPE=Release ..
make
Y para Debug
(nuevamente desde la raíz de su proyecto):
mkdir Debug
cd Debug
cmake -DCMAKE_BUILD_TYPE=Debug ..
make
Release
/ Debug
agregará las banderas apropiadas para su compilador. También hay RelWithDebInfo
y MinSizeRel
configuraciones de construcción.
Puede modificar / agregar a las banderas especificando un archivo de cadena de herramientas en el que puede agregar CMAKE_C_FLAGS_DEBUG
y CMAKE_C_FLAGS_RELEASE
variables, por ejemplo:
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall")
Ver CMAKE_BUILD_TYPE para más detalles.
En cuanto a su tercera pregunta, no estoy seguro de lo que está preguntando exactamente. CMake debería detectar y usar automáticamente el compilador apropiado para sus diferentes archivos fuente.
cmake -i ..
en su lugar, por lo que cmake se ejecutará de forma interactiva, preguntándole qué tipo de compilación desea (Ninguno, Release, Debug, MinSizeRel, RelWithDebInfo).