代码链接: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博客)