使用TouchGFX构建STM32目标时出现头文件缺失编译错误
问题描述
STM32CubeIDE中构建项目无报错,但使用TouchGFX构建STM32目标时出现编译错误:
CM7/TouchGFX/target/generated/TouchGFXGeneratedHAL.cpp:28:10: fatal error: stm32h7xx_hal.h: No such file or directory
#include <stm32h7xx_hal.h>
^~~~~~~~~~~~~~~~~
compilation terminated.
gcc/makefile_cm7:503: recipe for target 'CM7/TouchGFX/build/Riverdi_70STM32H7/CM7/TouchGFX/target/generated/TouchGFXGeneratedHAL.o' failed
make[3]: Leaving directory 'c:/Users/Aziz/Downloads/aaaaaa/MV_Display'
make[3]: *** [CM7/TouchGFX/build/Riverdi_70STM32H7/CM7/TouchGFX/target/generated/TouchGFXGeneratedHAL.o] Error 1
make[2]: *** [generate_assets] Error 2
gcc/makefile_cm7:438: recipe for target 'generate_assets' failed
make[2]: Leaving directory 'c:/Users/Aziz/Downloads/aaaaaa/MV_Display'
Makefile_cm7:51: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory 'C:/Users/Aziz/Downloads/aaaaaa/MV_Display/gcc'
../../gcc/Makefile:10: recipe for target 'flash' failed
make: *** [flash] Error 2
Failed
Failed
解决步骤
检查TouchGFX包含路径配置
打开TouchGFX Designer,进入Project Settings->Toolchain,确认STM32 HAL库的头文件路径(如../Core/Inc、../Drivers/STM32H7xx_HAL_Driver/Inc)已添加到包含目录,缺失则手动补充。同步CubeIDE与TouchGFX配置
在STM32CubeIDE中点击Project->Generate Code重新生成代码,确保HAL库文件和路径配置同步到TouchGFX项目,之后关闭并重启TouchGFX Designer刷新文件。修正Makefile包含路径
找到项目中的gcc/makefile_cm7文件,检查CFLAGS或INCLUDE_DIRS配置,确保包含HAL库头文件目录,示例配置:INCLUDE_DIRS += -I../Core/Inc INCLUDE_DIRS += -I../Drivers/STM32H7xx_HAL_Driver/Inc INCLUDE_DIRS += -I../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy缺失则手动添加并保存。
清理缓存重新构建
在TouchGFX Designer中执行Clean Build清除编译缓存,再重新构建目标验证错误是否消除。
内容的提问来源于stack exchange,提问作者MOHAMED AZIZ ACHOUR

