剛學cmake,很多東西還不是很懂,不過今天剛剛實現了通過CMake控制debug的開關,興奮之余記錄一下。
背景介紹:
最近參與到了一個大的C++項目,很多代碼已經非常成熟,我來添加一些輔助功能,但是源代碼中沒有預留debug的接口。為了不影響現有代碼的結構,我想通過宏定義的方式添加DEBUG控制。原本以為#DEFINE DEBUG只能在.h或.cc文件中定義,后來經人點播才知道#IFDEF DEBUG的精髓是通過cmake來實現。
具體步驟:
首先,我在src代碼里編寫了若干debug的輸出:
#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