Компилируем с cmake и включаем отладочную информацию - PullRequest
13 голосов
/ 09 декабря 2011

cmake версия 2.8.5

Я пытаюсь скомпилировать свой проект с помощью cmake. Однако, когда я компилирую, я не думаю, что я включаю отладочные флаги, т.е. Как и когда я пытаюсь отладить, нет никакой информации отладки.

Есть ли проблема с файлами CMakeLists.txt. У меня 3 из них

# Mimimum version of cmake required
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

# Name of project
PROJECT(sdp_creator C)

# Check for correct compiler
# Using C compiler GNUCXX for c++ compiler
IF(CMAKE_COMPILER_IS_GNUCC)
  MESSAGE(STATUS "=== GCC C COMPILER DETECTED")
  SET(CMAKE_C_FLAGS "-m32 -ggdb -D_DEBUG -Wextra -Wall -Wunreachable-code -O0 -D_LARGEFILE64_SOURCE")
ENDIF(CMAKE_COMPILER_IS_GNUCC)

# Using windows compiler i.e. msvc++
IF(WIN32)
  MESSAGE(STATUS "=== MSVC COMPILER DETECTED")
ENDIF(WIN32)

# Location of directory where include files are kept
INCLUDE_DIRECTORIES($ENV{HOME}/projects/sdp_creator/src/sdp)
INCLUDE_DIRECTORIES($ENV{HOME}/projects/sdp_creator/src/apr/inc)

# Location of directory where libraries are kept
LINK_DIRECTORIES($ENV{HOME}/projects/sdp_creator/src/apr/lib)

# Add subdirectories
ADD_SUBDIRECTORY(driver)
ADD_SUBDIRECTORY(sdp)

создание общей библиотеки:

# Create a shared library called libsdp from sdp.c
# NOTE: static is the default
# NOTE: the lib prefix is automatically added
ADD_LIBRARY(sdp SHARED sdp.c)

Создание исполняемого файла:

# Add executable called sdp_creator from source file
ADD_EXECUTABLE(sdp_creator main.c)

# Link the sdp library and other libraries with the excutable 
#if using windows compiler add additional windows libraries
IF(WIN32)
  TARGET_LINK_LIBRARIES(sdp_creator libsdp ws2_32)
  MESSAGE(STATUS "=== Linking executable with windows libraries")
ENDIF(WIN32)

# if using gcc compiler
# NOTE: no need to add the -l prefix i.e. -lsdp, no automatically
IF(CMAKE_COMPILER_IS_GNUCC)
  TARGET_LINK_LIBRARIES(sdp_creator sdp apr-1)
  MESSAGE(STATUS "=== Linking executable with posix libraries")
ENDIF(CMAKE_COMPILER_IS_GNUCC)

Большое спасибо за любой совет,

Ответы [ 4 ]

21 голосов
/ 09 декабря 2011

Если вы используете генератор Unix Makefiles (или любой другой Makefile-файл), установите для переменной CMAKE_BUILD_TYPE значение «Debug»

cmake -DCMAKE_BUILD_TYPE=Debug ../src

Это автоматически добавит правильные определения и флаги для вашего компилятора. Вам не нужно добавлять какие-либо флаги самостоятельно.

В случае генераторов с несколькими конфигурациями (таких как Visual Studio и Xcode) CMAKE_BUILD_TYPE игнорируется, поскольку выбор конфигурации сборки Debug или Release оставлен на усмотрение разработчика во время сборки и неизвестен в CMake. настроить время.

7 голосов
/ 09 декабря 2011

Вы можете проверить точные шаги, используемые в make, установив VERBOSE=1.Это скажет вам, были ли включены флаги.

cmake project_dir
make VERBOSE=1

Вы также можете проверить CMakeCache.txt, чтобы увидеть, какое значение присвоено переменной CMAKE_C_FLAGS.

5 голосов
/ 02 февраля 2016

вы можете использовать флаги CMAKE_C_FLAGS и CMAKE_CXX_FLAGS с -g0 / 1/2 (флаг отладочной информации для компилятора. -G2 - самая высокая информация):

cmake ... -DCMAKE_C_FLAGS="-g2" -DCMAKE_CXX_FLAGS="-g2" ...
2 голосов
/ 16 февраля 2018

Другой вариант, если для сборки проекта используются unix Makefile, это установить CMAKE_BUILD_TYPE в файле CMakeLists.txt напрямую:
set(CMAKE_BUILD_TYPE Debug)

Вы можете найти больше в
$ man cmakevars
Ищите CMAKE_BUILD_TYPE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...