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

文章讨论了CMake中设置构建类型(如Debug,Release等)的重要性,以及自定义构建类型时的注意事项。提到非法构建类型不会报错但可能导致编译参数集为空。此外,解释了-DNDEBUG宏的作用,即关闭assert()调试语句。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值