Отладка против выпуска в CMAKE

В компилированном проекте GCC

  • как запустить cmake для каждого целевого типа (debug/release)?
  • как указать отладочные и выпускающие флаги C/С++ с помощью cmake?
  • как выразить, что основной исполняемый файл будет скомпилирован с помощью g++ и одной вложенной библиотеки с gcc?

Ответ 1

Как правило, лучше всего создавать "вне источника". Создайте CMakeLists.txt в корне вашего проекта. Затем из корня вашего проекта:

mkdir Release
cd Release
cmake -DCMAKE_BUILD_TYPE=Release ..
make

И для Debug (снова из корня вашего проекта):

mkdir Debug
cd Debug
cmake -DCMAKE_BUILD_TYPE=Debug ..
make

Debug добавит флаги отладки, соответствующие вашему компилятору. Видеть этот FAQ для более подробной информации.


Вы можете изменить/добавить флаги в CMakeLists.txt через переменные CMAKE_C_FLAGS_DEBUG и CMAKE_C_FLAGS_RELEASE, например:

set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall")

Подробнее см. эту ссылку в разделе CMAKE_BUILD_TYPE.


Что касается вашего третьего вопроса, я не уверен, что именно вы спрашиваете. CMake должен автоматически определять и использовать компилятор, соответствующий вашим исходным файлам.

Ответ 2

Для флагов отладки/выпуска см. переменную CMAKE_BUILD_TYPE (вы передаете ее как cmake -DCMAKE_BUILD_TYPE=value). Он принимает значения, такие как Release, Debug и т.д.

http://cmake.org/Wiki/CMake_Useful_Variables#Compilers_and_Tools

cmake использует расширение для выбора компилятора, поэтому просто укажите свои файлы .c.

Вы можете переопределить это с помощью различных настроек:

Например:

set_source_files_properties(yourfile.c LANGUAGE CXX) 

Скомпилирует файлы .c с g++. В приведенной выше ссылке также показано, как выбрать конкретный компилятор для C/С++.