> 文章列表 > 学习/cmake-cookbook/chapter-01/recipe-07/example

学习/cmake-cookbook/chapter-01/recipe-07/example

学习/cmake-cookbook/chapter-01/recipe-07/example

代码链接:cmake-cookbook/chapter-01/recipe-07/example at master · dev-cafe/cmake-cookbook · GitHub

BUG 是告诉如G++之类的编译器在每个translation unit中定义macro NDEBUG,进而导致所有assert()都被关闭!合法取值是Debug,Release,RelWithDebInfo,MinSizeRel;,其中CONFIG就是上述构建类型名称的大写,因为我自定义了Debugs,所以编译参数集就是CMAKE_C_FLAG_DEBUGS)但是我随便设置了一个非法值,也没有报错,但是对应的编译参数集应该是空的,打印如下:(注意编译参数集的命名规则是。2、如何设置构建类型。 

1、构建类型:

        合法取值是Debug,Release,RelWithDebInfo,MinSizeRel;另外可以自定义,但是要设置对应的编译参数集。

        详细参见Default And Custom Configurations

        但是我随便设置了一个非法值,也没有报错,但是对应的编译参数集应该是空的,打印如下:(注意编译参数集的命名规则是CMAKE_<LANG>_FLAGS_<CONFIG> ,其中CONFIG就是上述构建类型名称的大写,因为我自定义了Debugs,所以编译参数集就是CMAKE_C_FLAG_DEBUGS)

        

2、如何设置构建类型

        

set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)

        详细参见CMAKE_BUILD_TYPE

3、编译参数集中的-DNDEBUG是什么意思?

        注意:CMake2.8中默认是有-DNDEBUG的

        -DNDEBUG 是告诉如G++之类的编译器在每个translation unit中定义macro NDEBUG,进而导致所有assert()都被关闭! (转自注意:CMake2.8中默认是有-DNDEBUG的_cmake ndebug_updog的博客-CSDN博客)