八、CMake 编译选项设置

在CMakeLists.txt中可以通过修改CMake内置的环境变量来改变C或C++的编译选项.

编译选项相关的CMake 变量如下:

CMAKE_C_FLAGS = 
CMAKE_C_FLAGS_DEBUG = -g
CMAKE_C_FLAGS_MINSIZEREL = -Os -DNDEBUG
CMAKE_C_FLAGS_RELEASE = -O3 -DNDEBUG
CMAKE_C_FLAGS_RELWITHDEBINFO = -O2 -g -DNDEBUG

CMAKE_CXX_FLAGS = 
CMAKE_CXX_FLAGS_DEBUG = -g
CMAKE_CXX_FLAGS_MINSIZEREL = -Os -DNDEBUG
CMAKE_CXX_FLAGS_RELEASE = -O3 -DNDEBUG
CMAKE_CXX_FLAGS_RELWITHDEBINFO = -O2 -g -DNDEBUG

等号右边是通过在CMakeLists.txt中打印对应变量得到的默认值。

对于C语言设置CMAKE_C_FLAGS相关参数,C++语言设置CMAKE_CXX_FLAGS相关参数。并且分为DEBUG,RELEASE,MINSIZEREL和RELWITHDEBINFO四种类型。

以C++语言编译选项为例:

CMAKE_CXX_FLAGS_DEBUG:编译Debug版本的时候会采用的编译选项,默认只有一个-g选项,包含调试信息;

CMAKE_CXX_FLAGS_RELEASE:编译Release版本的时候采用的编译选项,默认包-O3选项,该选项表示优化等级;

CMAKE_CXX_FLAGS_MINSIZEREL:主要减小目标文件大小,选项-Os就是这个作用;

CMAKE_CXX_FLAGS_RELWITHDEBINFO:包含调试信息的Release版本,-O2和-g,优化的同时也包含了调试信息;

CMAKE_CXX_FLAGS:这个选项没有默认值;

顾名思义,当CMake在编译项目的时候,选项为Debug则会采用CMAKE_CXX_FLAGS_DEBUG选项,编译Release则会采用CMAKE_CXX_FLAGS_RELEASE选项,因此,需要设置编译选项的时候,在CMakeLists.txt中设置这些变量就可以了。

实际上可以分别设置CMAKE_CXX_FLAGS_DEBUG和CMAKE_CXX_FLAGS_RELEASE,如下:

set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -std=c++11 -Wl,-rpath=../lib")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -std=c++11 -g")

因为在最终编译的时候的编译选项不管是Release还是Debug都包含了CMAKE_CXX_FLAGS这个变量。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值