[STM32H7] 执行 stm32cubeidec -build all 会导致重复构建

[复制链接]
53|13
Hitomi22 发表于 2026-6-9 17:52 | 显示全部楼层 |阅读模式
我通过命令行脚本编译一个 STM32H7Cube 官方示例工程,发现CM7 和 CM4 的每个工程配置都会被编译两次:CM7 的 Release 版本编译两次,接着 CM7 的 Debug 版本编译两次,CM4 的工程也是同样的情况。
正常行为是:每个工程的每种编译配置仅执行一次编译。
路径:STM32CubeH7/Projects/STM32H747I-DISCO/Examples/GPIO/GPIO_EXTI (master)$ ./build_all.bat | grep 'Build'
$ ./build_all.bat | grep 'Build'
Building All Projects...
Project: GPIO_EXTI doesn't appear to be a CDT project. Skipping...
11:23:18 **** Build of configuration Release for project GPIO_EXTI_CM7 ****
11:23:20 Build Finished. 0 errors, 0 warnings. (took 1s.946ms)
11:23:20 **** Build of configuration Release for project GPIO_EXTI_CM7 ****
11:23:20 Build Finished. 0 errors, 0 warnings. (took 246ms)
11:23:21 **** Build of configuration Debug for project GPIO_EXTI_CM7 ****
11:23:23 Build Finished. 0 errors, 0 warnings. (took 2s.35ms)
11:23:23 **** Build of configuration Debug for project GPIO_EXTI_CM7 ****
11:23:24 Build Finished. 0 errors, 0 warnings. (took 239ms)
11:23:24 **** Build of configuration Release for project GPIO_EXTI_CM4 ****
11:23:25 Build Finished. 0 errors, 0 warnings. (took 1s.437ms)
11:23:25 **** Build of configuration Release for project GPIO_EXTI_CM4 ****
11:23:25 Build Finished. 0 errors, 0 warnings. (took 243ms)
11:23:26 **** Build of configuration Debug for project GPIO_EXTI_CM4 ****
11:23:27 Build Finished. 0 errors, 0 warnings. (took 1s.713ms)
11:23:27 **** Build of configuration Debug for project GPIO_EXTI_CM4 ****
11:23:28 Build Finished. 0 errors, 0 warnings. (took 239ms)

公羊子丹 发表于 2026-6-10 08:10 | 显示全部楼层
我怀疑是脚本里重复调用了编译指令,你打开build_all.bat看看代码,大概率是同个配置写了两次build命令。
周半梅 发表于 2026-6-10 08:13 | 显示全部楼层
这种重复编译还挺耗时间的,你可以先单独执行单条stm32cubeidec编译命令,看看会不会也出现两次构建。
帛灿灿 发表于 2026-6-10 08:14 | 显示全部楼层
想问下你用的是哪个版本的STM32CubeIDE?部分旧版本命令行工具本身就存在双核工程重复编译的bug。
童雨竹 发表于 2026-6-10 08:15 | 显示全部楼层
调侃一下,看着日志一遍又一遍编译属实闹心,本来想自动化提效,结果反倒多浪费了不少等待时间。
万图 发表于 2026-6-10 08:16 | 显示全部楼层
双核H7工程比较特殊,你试试先手动清理工程缓存和编译产物,再跑脚本,排除文件检测误判的问题。
Wordsworth 发表于 2026-6-10 08:17 | 显示全部楼层
我之前遇到过类似情况,是工程目录里残留的临时文件导致工具判定文件改动,所以触发二次编译。
Bblythe 发表于 2026-6-10 08:18 | 显示全部楼层
你可以分开编译CM7和CM4工程,不要一次性build all,逐个执行看看能不能定位到是哪部分出了异常。
Pulitzer 发表于 2026-6-10 08:19 | 显示全部楼层
检查下工程的CDT配置文件吧,有可能双核工程的构建目标重复注册了,命令行读取后就会重复执行。
舒伯特玫瑰 发表于 2026-6-10 16:58 | 显示全部楼层
每个配置只一次 Build
FranklinUNK 发表于 2026-6-11 14:47 | 显示全部楼层
检查脚本,确认没有重复调用编译命令。之前遇到过类似情况,是脚本里不小心复制粘贴了相同的编译指令。
甜心puppy 发表于 2026-6-11 15:40 | 显示全部楼层
第二次构建显示只用了200多毫秒,明显是增量编译没有找到需要改的文件,直接跳过了。
等凌晨日出 发表于 2026-6-11 18:25 | 显示全部楼层
这个现象很像是批处理脚本里某个循环或者子函数被调用了两次。
茉璃夏 发表于 2026-6-11 20:41 | 显示全部楼层
检查一下你的build_all.bat脚本内容,很可能里面有两个地方都调用了编译命令。
豌豆爹 发表于 2026-6-11 21:39 | 显示全部楼层
也有可能这个批处理先扫描了所有工程,然后又循环了一次,导致重复执行。
classroom 发表于 2026-6-11 15:42 | 显示全部楼层
第二遍编译报0错误0警告且时间极短,说明编译器发现没新代码就没动,其实是正常行为。
cr315 发表于 2026-6-11 16:13 | 显示全部楼层
你手动在IDE里分别点构建Release和Debug各一次,看会不会也只触发一次,对比一下。
duo点 发表于 2026-6-11 18:03 | 显示全部楼层
命令行参数里不要用-all,换成单独指定工程名和配置,就能避开重复构建的问题。
flycamelaaa 发表于 2026-6-11 21:14 | 显示全部楼层
检查你的工作区文件夹里是不是有多余的.project或.cproject文件副本,被脚本误扫了。
jcky001 发表于 2026-6-11 20:12 | 显示全部楼层
尝试升级到最新版STM32CubeIDE,旧版本的命令行工具有这类双倍构建的毛病。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

190

主题

193

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部
0