我是make的新手,我无法将.asm输出添加到已经存在的makefile中。我想让makefile生成.asm文件(使用AVR-GCC -S)到所有.c文件。您能帮我解决吗?
# AVR model
MMCU = atmega16
# Clock frequency
F_CPU = 16000000
# Programmer model
PROGRAMMER = usbasp
PROGRAMMER_PORT = usb
# Output file name
PROJECT = main
# Sources files
SOURCES = main.c\
cross/drivers/internals/GPIO/GPIO.c \
cross/drivers/internals/PPI/PPI8Bit.c \
cross/drivers/internals/USART/USART_0.c \
CC = avr-gcc
ASM = avr-gcc
OBJCOPY = avr-objcopy
CDEFS = -DF_CPU=$(F_CPU)UL
CFLAGS = $(CDEFS)
CFLAGS += -mmcu=$(MMCU) -g -Os -Wall
OBJS = $(SOURCES:.c=.o)
ASMS = $(SOURCES:.c=.s)
$(PROJECT).hex: $(PROJECT).out
$(OBJCOPY) -O ihex -R .eeprom $(PROJECT).out $(PROJECT).hex
$(PROJECT).out: $(OBJS)
$(CC) $(CFLAGS) $^ -o $@ -lm
$.o:%.c
$(CC) $(CFLAGS) $< -o $@
##???
$.s:%.c
$(CC) $(CFLAGS) -S $< -o $@
asm: $(OBJS_S)
flash: $(PROJECT).hex
avrdude -c $(PROGRAMMER) -P $(PROGRAMMER_PORT) -p $(MMCU) -U flash:w:$(PROJECT).hex
clean:
rm -f $(OBJS)
rm -f $(PROJECT).out
rm -f $(PROJECT).hex
.PHONY: clean program_flash
谢谢
[寻求帮助时,请始终提供make的版本,您键入的确切(剪切和粘贴)命令以及确切的问题的准确描述(如果合适,请剪切和粘贴输出)。说“我做不到”并不能帮助我们理解问题所在。
这些绝对不正确:
$.o:%.c
...
$.s:%.c
Pattern rules使用%
的both]两侧的:
,如下所示:
%.o:%.c ... %.s:%.c
第二,您将asm文件放入此变量:
ASMS = $(SOURCES:.c=.s)
但是您列出了一个完全不同的变量作为
asm
目标的先决条件:
asm: $(OBJS_S)
据我所知,从未定义此
OBJS_S
变量。