0

我在自动构建管道中使用 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 秒后会打印“构建完成”消息,此时已生成输出二进制文件,但该命令仅挂起几分钟。不显示错误消息。

4

1 回答 1

1

在自动构建过程中,每个构建都在一个干净的环境中开始。在命令行上重复构建时,我发现只有在重复相同的构建时才观察到第一个构建的延迟。此外,.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 分钟。

于 2021-06-10T08:02:16.353 回答