STM32CubeIDE 终止前的无头构建延迟

Posted

技术标签:

【中文标题】STM32CubeIDE 终止前的无头构建延迟【英文标题】:STM32CubeIDE headless build delay before terminating 【发布时间】:2021-08-27 05:19:42 【问题描述】:

我在自动构建管道中使用 STM32CubeIDE 无头构建。构建命令本身的格式如下:

stm32cubeidec.exe --launcher.suppressErrors -nosplash -application org.eclipse.cdt.managedbuilder.core.headlessbuild -data <folder> -import <project> -build <project>/Release

这很好用,但我注意到构建本身需要大约 15 秒,但之后命令需要 1 到 2 分钟才能退出。这很烦人,因为它使构建过程花费的时间比必要的长得多。

我尝试直接从命令行运行命令,并在两台不同的计算机上计算运行时间。结果类似这样:

...
09:30:11 Build Finished. 0 errors, 0 warnings. (took 15s.99ms)

real    2m25.843s

大约 20 秒后打印“构建完成”消息,此时输出二进制文件已生成,但命令仅挂起几分钟。不显示任何错误消息。

【问题讨论】:

【参考方案1】:

在自动构建过程中,每个构建都在干净的环境中开始。在命令行上重复构建时,我发现只有在重复相同的构建时才观察到第一个构建的延迟。此外,在“data”文件夹中生成了一个.metadata 文件夹。在构建之前删除该文件夹会使延迟再次发生。因此延迟似乎是由于信息被缓存到.metadata 文件夹中。

原来有一个选项 -no-indexer 带有模糊的描述“禁用索引器”。应用此选项也消除了干净构建的延迟:

stm32cubeidec.exe --launcher.suppressErrors -nosplash -application org.eclipse.cdt.managedbuilder.core.headlessbuild -data <folder> -import <project> -build <project>/Release -no-indexer

这样做将我的构建管道中的典型总构建时间从 2-3 分钟减少到大约 1 分钟。

【讨论】:

以上是关于STM32CubeIDE 终止前的无头构建延迟的主要内容,如果未能解决你的问题,请参考以下文章

HAL库系列1.STM32CubeIDE下载与配置

关于STM32CubeIDE无法正常启动GDB服务端的解决办法

STM32CubeIDE只能刷一次,没有SWD调试

STM32CubeIDE使用ITM调试

STM32CubeIDE 中的 CMSIS DSP

傻瓜式教程:如何使用“多合一”开发工具STM32CubeIDE