剛學cmake,不少東西還不是很懂,不過今天剛剛實現了經過CMake控制debug的開關,興奮之餘記錄一下。ui
最近參與到了一個大的C++項目,不少代碼已經很是成熟,我來添加一些輔助功能,可是源代碼中沒有預留debug的接口。爲了避免影響現有代碼的結構,我想經過宏定義的方式添加DEBUG控制。本來覺得#DEFINE DEBUG只能在.h或.cc文件中定義,後來經人點播才知道#IFDEF DEBUG的精髓是經過cmake來實現。debug
首先,我在src代碼裏編寫了若干debug的輸出:code
#IFDEF DEBUG some print command; #ENDIF
IF (CMAKE_BUILD_TYPE STREQUAL Debug) 用IF控制,能夠實現Release版本不輸出debug信息 ADD_DEFINITIONS(-DDEBUG) 不知道爲何DEBUG必須寫成-DDEBUG,誰來解釋一下吧 ENDIF()
$ cmake ../src -DCMAKE_BUILD_TYPE=Debug $ make
這樣再運行可執行文件時就會執行some print command等debug信息了。若是不想看到debug信息,只需將Debug改成Release便可:接口
$ cmake ../src -DCMAKE_BUILD_TYPE=Release