通常在調用./configure時,能夠經過設置CXXFLAGS或者CFLAGS使程序能夠支持調試,就是能夠用GDB查看程序運行的信息,但在cmake編譯時,在cmake過程和後面的make及make install都沒法加入調試信息。.net
採用 $ gdb 調試時 出現 以下 錯誤:debug
(no debugging symbols found)
調試
實際上是能夠讓cmake在編譯時支持gdb調試的,能夠經過以下方法來進行設置:code
在CMakeLists.txt中加入以下:blog
1 SET(CMAKE_BUILD_TYPE "Debug") 2 SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb") 3 SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
緣由是CMake 中有一個變量 CMAKE_BUILD_TYPE ,能夠的取值是 Debug Release RelWithDebInfo >和 MinSizeRel。字符串
當這個變量值爲 Debug 的時候,CMake 會使用變量 CMAKE_CXX_FLAGS_DEBUG 和 CMAKE_C_FLAGS_DEBUG 中的字符串做爲編譯選項生成 Makefile;get
而後從新cmake以後再make就能夠經過gdb執行生成的可執行文件了。it