gpt4 book ai didi

c++ - 编译时如何更改makefile诊断消息[GNU ARM GCC,Eclipse make.exe]

转载 作者:行者123 更新时间:2023-12-02 09:58:01 25 4
gpt4 key购买 nike

我正在使用GNU-ARM-Gcc和Eclipse_make.exe构建用于STM32F4的程序来构建项目。一切正常,但编译太长且很难看到时,诊断消息将显示在终端上。编译每个* .c文件时,终端会给我一条诊断消息(请参阅以下段落),任何人都可以给我建议以仅显示文件名[删除gcc目录路径,依赖项,头文件路径]。生成文件由CubeMX生成。这是makefile:https://github.com/loiefy/STM32-makefile/blob/main/Makefile
诊断消息示例:

C:/Program Files (x86)/GNU Arm Embedded Toolchain/9 2020-q2-update/bin/arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -DUSE_HAL_DRIVER -DSTM32F407xx -IEngine/Src/website_c -IEngine/Inc -ILWIP/Target -IMiddlewares/Third_Party/LwIP/src/include -IMiddlewares/Third_Party/LwIP/system -IDrivers/STM32F4xx_HAL_Driver/Inc -IDrivers/STM32F4xx_HAL_Driver/Inc/Legacy -IMiddlewares/Third_Party/LwIP/src/include/netif/ppp -IMiddlewares/Third_Party/LwIP/src/apps/httpd -IDrivers/CMSIS/Device/ST/STM32F4xx/Include -IMiddlewares/Third_Party/LwIP/src/include/lwip -IMiddlewares/Third_Party/LwIP/src/include/lwip/apps -IMiddlewares/Third_Party/LwIP/src/include/lwip/priv -IMiddlewares/Third_Party/LwIP/src/include/lwip/prot -IMiddlewares/Third_Party/LwIP/src/include/netif -IMiddlewares/Third_Party/LwIP/src/include/posix -IMiddlewares/Third_Party/LwIP/src/include/posix/sys -IMiddlewares/Third_Party/LwIP/system/arch -IDrivers/CMSIS/Include -IDrivers/CMSIS/Include -IEngine/Inc -ILWIP/Target  -Og -Wall -fdata-sections -ffunction-sections -fdiagnostics-show-location=every-line -g -gdwarf-2 -MMD -MP -MF"build/mqtt.d"  -Wa,-a,-ad,-alms=build/mqtt.lst Middlewares/Third_Party/LwIP/src/apps/mqtt/mqtt.c -o build/mqtt.o
我要显示的消息: Middlewares / Third_Party / LwIP / src / apps / mqtt / mqtt.c 已编译
我已经花了一天的时间找到echo命令或另一个具有相同目的的命令,以在makefile中显示消息。但是我什么也没找到。
谢谢您的帮助

最佳答案

因此,默认情况下,make会回显运行的每一行-makefile中的编译器行:

$(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR) 
$(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.c=.lst)) $< -o $@
将输出执行行,您可以做的是:
$(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR) 
@echo "compiling $<"
@$(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.c=.lst)) $< -o $@
注意:make中的 @前缀表示不打印正在执行的命令。因此,即使回声线也需要@,否则您将得到 echo comping...以及 compiling ...的打印
您可能会或可能不想对所有输出执行类似操作。有时,我会根据可以传入的详细程度标志有条件地执行一项或多项操作,以便当您真正想要查看实际的编译行时可以...。

关于c++ - 编译时如何更改makefile诊断消息[GNU ARM GCC,Eclipse make.exe],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64315495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com