c++經過CMake實現debug開關

剛學cmake,不少東西還不是很懂,不過今天剛剛實現了經過CMake控制debug的開關,興奮之餘記錄一下。ui

背景介紹:

最近參與到了一個大的C++項目,不少代碼已經很是成熟,我來添加一些輔助功能,可是源代碼中沒有預留debug的接口。爲了避免影響現有代碼的結構,我想經過宏定義的方式添加DEBUG控制。本來覺得#DEFINE DEBUG只能在.h或.cc文件中定義,後來經人點播才知道#IFDEF DEBUG的精髓是經過cmake來實現。debug

具體步驟:

首先,我在src代碼裏編寫了若干debug的輸出:code

#IFDEF DEBUG

    some print command;

#ENDIF

而後,在Cmakefile中添加DEBUG的定義:

IF (CMAKE_BUILD_TYPE STREQUAL Debug)        用IF控制,能夠實現Release版本不輸出debug信息
    ADD_DEFINITIONS(-DDEBUG)                            不知道爲何DEBUG必須寫成-DDEBUG,誰來解釋一下吧
ENDIF()

最後,在cmake的命令中設置build種類爲Debug:

$ cmake ../src -DCMAKE_BUILD_TYPE=Debug

$ make

這樣再運行可執行文件時就會執行some print command等debug信息了。若是不想看到debug信息,只需將Debug改成Release便可:接口

$ cmake ../src -DCMAKE_BUILD_TYPE=Release
相關文章
相關標籤/搜索