c++经过CMake实现debug开关

刚学cmake,不少东西还不是很懂,不过今天刚刚实现了经过CMake控制debug的开关,兴奋之余记录一下。ui

背景介绍:

最近参与到了一个大的C++项目,不少代码已经很是成熟,我来添加一些辅助功能,可是源代码中没有预留debug的接口。为了避免影响现有代码的结构,我想经过宏定义的方式添加DEBUG控制。本来觉得#DEFINE DEBUG只能在.h或.cc文件中定义,后来经人点播才知道#IFDEF DEBUG的精髓是经过cmake来实现。debug

具体步骤:

首先,我在src代码里编写了若干debug的输出:code

#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
相关文章
相关标签/搜索