Com o CMake, geralmente é recomendável fazer uma compilação "fora da fonte" . Crie o seu CMakeLists.txt
na raiz do seu projeto. A partir da raiz do seu projeto:
mkdir Release
cd Release
cmake -DCMAKE_BUILD_TYPE=Release ..
make
E para Debug
(novamente a partir da raiz do seu projeto):
mkdir Debug
cd Debug
cmake -DCMAKE_BUILD_TYPE=Debug ..
make
Release
/ Debug
adicionará os sinalizadores apropriados para o seu compilador. Há também RelWithDebInfo
e MinSizeRel
configurações de compilação.
Você pode modificar / adicionar aos sinalizadores especificando um arquivo de cadeia de ferramentas no qual você pode adicionar CMAKE_C_FLAGS_DEBUG
e CMAKE_C_FLAGS_RELEASE
variáveis, por exemplo:
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall")
Veja CMAKE_BUILD_TYPE para mais detalhes.
Quanto à sua terceira pergunta, não sei exatamente o que você está perguntando. O CMake deve detectar e usar automaticamente o compilador apropriado para seus diferentes arquivos de origem.
cmake -i ..
, para que o cmake seja executado interativamente, perguntando qual tipo de compilação você deseja (Nenhum, Liberar, Depurar, MinSizeRel, RelWithDebInfo).