STM32CUBEIDE中 Debug 和 Release 的作用/区别/使用场景
基本主流IDE都有该功能选项例如Keil MDK, IAR, Eclipse, VS等, 这里使用STM32CUBEIDE来举例
创建STM32CUBEIDE工程后默认有2个目标选项 Debug / Release.
它们的主要作用是区分不同目标(如Debug和Release)中的编译选项/预处理符号定义/测试文件的添加与否等进行统一管理.
一. 使用场景:
-
在开发阶段为了减少编译优化造成的一系列问题, 我们往往将编译器优化等级设置为最低. 正式发布版一般来说会将优化等级进行提升.即Debug中低优化, Release中高优化.
-
在嵌入式开发过程中我们还需要进行大量的硬件测试, 算法验证等. 有些测试并不需要包含在正式的发布程序中. 即Debug中需要包含测试程序, Release中不需要.
-
再者有时中间会临时制作一版用于客户现场测试等等, 这时候相当于我们需要维护的版本已经不止一个. 即Debug/Release/Release_R1/_R2/_R3...
二. STM32CUBEIDE中默认Debug / Release的配置区别
(以下区别不代表所有)
- Debug工程中默认预处理符号有 DEBUG, 如下:
- 默认编译器的优化等级设置不一样
Debug目标:
Release目标:
三. 如何新建
在工程名右键->Properties
点击New 进行新建
Name 中填写你要创建的目标名, Existing configuration 选项决定你将要基于该目标已有的配置.
四. 选择你的工程
五. 为目标添加不同的参数选项
我们可以在不同的目标中添加不同的编译选项, 设置不同的优化级别, 定义预处理符号, 甚至添加不同的文件结构.
- 例如我们在目标中添加一些预处理符号(宏开关).
-
使用不同的工具链版本:
等等.
六. 注意事项
默认情况下IDE一般选择的都是Debug目标. 很多人甚至不知道有Debug/Release的选项和区别,
从而使用Debug作为发布程序. 这在一般的项目中可能并没有问题, 但这不是一个好的做法.