fix Makefile

This commit is contained in:
yankun
2026-02-03 17:39:04 +08:00
parent 7e0d0852a2
commit bf7bd929d7

View File

@@ -141,6 +141,17 @@ TARGET = demo
# 链接脚本
LDSCRIPT = STM32F429IGTX_FLASH.ld
#######################################
# 对象文件列表
#######################################
# 生成对象文件列表所有对象文件放在build根目录避免路径问题
OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o)))
OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES:.s=.o)))
# 设置vpath以查找源文件
vpath %.c $(sort $(dir $(C_SOURCES)))
vpath %.s $(sort $(dir $(ASM_SOURCES)))
#######################################
# 默认目标
#######################################
@@ -152,40 +163,34 @@ all: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET
# 创建构建目录
$(BUILD_DIR):
mkdir -p $@
@mkdir -p $@
# C源文件编译
$(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR)
# C源文件编译(匹配完整路径)
$(BUILD_DIR)/%.o: %.c Makefile
@echo "编译: $<"
$(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(<:.c=.lst) $(C_INCLUDES) $(C_DEFS) $(DEPFLAGS) -o $@ $<
@mkdir -p $(dir $@)
@$(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(<:.c=.lst) $(C_INCLUDES) $(C_DEFS) $(DEPFLAGS) -o $@ $<
# 汇编源文件编译
$(BUILD_DIR)/%.o: %.s Makefile | $(BUILD_DIR)
# 汇编源文件编译(匹配完整路径)
$(BUILD_DIR)/%.o: %.s Makefile
@echo "汇编: $<"
$(AS) -c $(ASFLAGS) $(C_INCLUDES) $(C_DEFS) -o $@ $<
@mkdir -p $(dir $@)
@$(AS) -c $(ASFLAGS) $(C_INCLUDES) $(C_DEFS) -o $@ $<
# 链接
$(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) Makefile
@echo "链接: $@"
$(CC) $(OBJECTS) $(LDFLAGS) -o $@
@$(CC) $(OBJECTS) $(LDFLAGS) -o $@
@echo "输出大小:"
$(SZ) $@
@$(SZ) $@
# 生成HEX文件
$(BUILD_DIR)/$(TARGET).hex: $(BUILD_DIR)/$(TARGET).elf | $(BUILD_DIR)
$(HEX) $< $@
@$(HEX) $< $@
# 生成BIN文件
$(BUILD_DIR)/$(TARGET).bin: $(BUILD_DIR)/$(TARGET).elf | $(BUILD_DIR)
$(BIN) $< $@
#######################################
# 对象文件列表
#######################################
OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o)))
vpath %.c $(sort $(dir $(C_SOURCES)))
OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES:.s=.o)))
vpath %.s $(sort $(dir $(ASM_SOURCES)))
@$(BIN) $< $@
#######################################
# 清理