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