c 通過CMake實現debug開關

2022-05-09 21:14:40 字數 774 閱讀 3002

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

最近參與到了乙個大的c++專案,很多**已經非常成熟,我來新增一些輔助功能,但是源**中沒有預留debug的介面。為了不影響現有**的結構,我想通過巨集定義的方式新增debug控制。原本以為#define debug只能在.h或.cc檔案中定義,後來經人點播才知道#ifdef debug的精髓是通過cmake來實現。

首先,我在src**裡編寫了若干debug的輸出:

#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

CMake指定C 版本

由於c 公升級,導致很多 需要用 c 11 的規範進行編譯。手動修改在 makefile 中,指定編譯 c 版本為增加編譯開關 std c 11。如下例 cflags std c 11使用 cmake 指定 c 版本有兩種方法。在 cmakelists.txt 中增加對 c 版本的定義。方法如下 e...

VSCode實現cmake與msbuild一鍵操作

將cmake.exe和msbuild.exe路徑加入系統環境變數 在settings.json配置 code runner.customcommand 項 之後在專案cmakelists.txt視窗或其他原始碼視窗按ctrl shift k,或按f1輸入run選擇run custom command...

實現通過C語言連線redis

實現c語言連線redis,首先需要將redis的環境配置好,即能實現用redis cli連線redis server。網上有很多教程,這裡就不再描述了。1.在存放redis的目錄中執行 cd deps hiredis 切換到hiredis目錄。2.在hiredis目錄中,執行 make。3.執行 c...