使用cmake编译并包含调试信息

使用cmake编译并包含调试信息,cmake,Cmake,cmake版本2.8.5 我正在尝试使用cmake编译我的项目。然而,当我编译时,我认为我没有包括调试cflags,即-ggdb-D_debug。当我尝试调试时,没有debub信息 CMakeLists.txt文件是否有任何问题。我有三个 # Mimimum version of cmake required CMAKE_MINIMUM_REQUIRED(VERSION 2.8) # Name of project PROJECT(sdp_creator C) # Check for cor

cmake版本2.8.5

我正在尝试使用cmake编译我的项目。然而,当我编译时,我认为我没有包括调试cflags,即-ggdb-D_debug。当我尝试调试时,没有debub信息

CMakeLists.txt文件是否有任何问题。我有三个

# 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)

非常感谢您的建议,

您可以通过设置
VERBOSE=1
来检查make中使用的确切步骤。这将告诉您是否包含这些标志

cmake project_dir
make VERBOSE=1
您还可以检查CMakeCache.txt以查看为CMAKE_C_FLAGS变量分配的值。

如果您使用的是“Unix Makefiles”(或任何基于Makefile的)生成器,请将变量CMAKE_BUILD_TYPE设置为“Debug”

这将自动为编译器添加正确的定义和标志。您不必自己添加任何标志


对于多配置生成器(如Visual Studio和Xcode),CMAKE_BUILD_类型被忽略,因为构建调试配置还是发布配置的选择在构建时留给开发人员,在CMAKE配置时不知道。

您可以使用带有-g0/1/2的CMAKE_C_标志和CMAKE_CXX_标志(编译器的调试信息标志,-g2是最高信息):


如果使用unix Makefiles构建项目,另一个选项是直接在CMakeLists.txt文件中设置CMAKE_build_类型:
set(CMAKE\u BUILD\u TYPE Debug)

您可以在
$man cmakevars


寻找CMAKE_BUILD_TYPE

,这对于本应是非常常见的操作来说是非常尴尬的。它还将在关闭优化的情况下生成,这可能不是您想要的。
cmake -DCMAKE_BUILD_TYPE=Debug ../src
cmake ... -DCMAKE_C_FLAGS="-g2" -DCMAKE_CXX_FLAGS="-g2" ...