c++通過CMake實現debug開關


剛學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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM