在 makefile 中构建 RELEASE 和 DEBUG

问题描述

我正在 stm32cubeIDE 中为 STM32 开发应用程序

我正在使用以下自定义生成文件。现在我想要一个版本和一个调试版本,但他们都构建了调试版本。

我试过了

RELDIR = bin/release
DEBUGDIR = bin/debug

ifdef DEBUG
BIN=$(DEBUGDIR)
COMPILERFLAGS += -g3 -O0 -D_DEBUG
else
BIN=$(RELDIR)
COMPILERFLAGS += -O3
endif

debug : rebuild
BIN=$(DEBUGDIR)
COMPILERFLAGS += -g3 -O0 -D_DEBUG

release : rebuild
BIN=$(RELDIR)
COMPILERFLAGS += -O3

谁能告诉我如何实现发布和调试版本:)

完整脚本:

RED = [31m
GREEN = [32m
YELLOW = [33m
BLUE = [34m
NC = [0m

BIN = bin
SRC = src
INC = inc

SOURCE = $(wildcard $(SRC)/*.c)
OBJECT = $(patsubst %,$(BIN)/%,$(notdir $(SOURCE:.c=.o)))

COMPILER=arm-none-eabi-gcc
ARCHITECTURE=cortex-m4
COMPILERFLAGS= -c -mcpu=$(ARCHITECTURE) -mthumb -mfloat-abi=soft -std=gnu11 -Wall -I $(INC)
LINKERFLAGS= -mcpu=$(ARCHITECTURE) -mthumb -mfloat-abi=soft --specs=nano.specs --specs=rdimon.specs -lc -lrdimon --specs=nosys.specs -T stm32_linker_script.ld -Wl,-Map=out.map

COMPILE= $(COMPILER) $(COMPILERFLAGS) -o $@ $<
LINK= $(COMPILER) $(LINKERFLAGS) -o $@ $^

RELDIR = bin/release
DEBUGDIR = bin/debug

ifdef DEBUG
BIN=$(DEBUGDIR)
COMPILERFLAGS += -g3 -O0 -D_DEBUG
else
BIN=$(RELDIR)
COMPILERFLAGS += -O3
endif

debug : rebuild
#BIN=$(DEBUGDIR)
#COMPILERFLAGS += -g3 -O0 -D_DEBUG
#
release : rebuild
#BIN=$(RELDIR)
#COMPILERFLAGS += -O3

.PHONY: rebuild
rebuild:
    $(MAKE) clean
    $(MAKE) all 

all : out.elf
    @echo "$(GREEN)Done!$(NC)"
    
out.elf : $(OBJECT)
    @echo "$(YELLOW)Linking...$(NC)"
    $(LINK)
    
$(BIN)/%.o : $(SRC)/%.c
    $(COMPILE)

.PHONY: all clean debug prep release remake
clean:
    @echo "$(GREEN)Cleaning...$(NC)"
    rm -rf $(BIN)/*.o $(BIN)/*.elf

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)