Как намеренно создавать файлы .dep? - PullRequest
0 голосов
/ 18 октября 2018

У меня есть 5 исходных файлов (main.c, memory.c и т. Д.). Я хочу создать файлы зависимостей для всех них .dep

При поиске в Интернете я обнаружил, что большинство людей страдают только от этихфайлы, созданные компилятором, и некоторые решают эту проблему путем принудительного добавления их в каталог.Но я хочу создать их намеренно (main.dep, memory.dep и т. Д.)

, как мне сделать так, чтобы команда make автоматически создала их для меня по моей команде:

$ make build

Я предполагаю, что это будет какой-то порядок, который я наложу в CPPFLAGS, затем включу CPPFLAGS в мой рецепт $ (TARGET) .out, но я не знаю, что именно.есть идеи?

вот мой Makefile прямо сейчас:

include sources.mk

# Platform Overrides

ifeq ($(PLATFORM),MSP432)

# Architectures Specific Flags
LINKER_FILE = msp432p401r.lds
CPU = cortex-m4
ARCH = thumb
SPECS = nosys.specs
COMPILE = -DMSP432
LDFLAGS_ARCH = -T $(LINKER_FILE)
CFLAGS_ARCH = -mcpu=$(CPU) -m$(ARCH) --specs=$(SPECS) -march=armv7e-m 
-mfloat-abi=hard -mfpu=fpv4-sp-d16
OBJS = $(SOURCES:.c=.o)
DUMP = arm-none-eabi-objdump

# Compiler Flags and Defines
CC = arm-none-eabi-gcc
LD = arm-none-eabi-ld

endif

ifeq ($(PLATFORM),HOST)
OBJS = $(SOURCES_BOTH:.c=.o)
COMPILE = -DHOST
CC = gcc
DUMP = objdump
endif


TARGET = c1m2
LDFLAGS = -Wl,-Map=$(TARGET).map $(LDFLAGS_ARCH)
CFLAGS = $(CFLAGS_ARCH) $(INCLUDES)  -Wall -Werror -g -O0  -std=c99 
$(COMPILE)
CPPFLAGS =


.PHONY: build
build: $(TARGET).out

.PHONY: compile-all
compile-all: $(OBJS)

CLEANO = main.o memory.o interrupts_msp432p401r_gcc.o 
startup_msp432p401r_gcc.o system_msp432p401r.o
CLEANI = main.i memory.i interrupts_msp432p401r_gcc.i 
startup_msp432p401r_gcc.i system_msp432p401r.i
CLEANASM = main.asm memory.asm interrupts_msp432p401r_gcc.asm 
startup_msp432p401r_gcc.asm system_msp432p401r.asm

.PHONY: clean
clean:
    $(RM) $(TARGET).out $(TARGET).map $(CLEANO) $(CLEANI) $(CLEANASM)

%.o : %.c
    $(CC) -c $< $(CFLAGS) -o $@

%.i : %.c
    $(CC) -E $< $(CFLAGS) -o $@

%.asm :  %.o
$(DUMP) -S --disassemble $< > $@

$(TARGET).out: $(OBJS)
    $(CC) $(OBJS) $(CFLAGS) $(LDFLAGS) -o $@

1 Ответ

0 голосов
/ 18 октября 2018

Вы можете просто добавить одну строку к шагу компиляции:

%.o : %.c
    $(CC) -c $< $(CFLAGS) -o $@

станет:

%.o : %.c
    # dep generation
    $(CC) -MM $< > $<.dep
    # compilation 
    $(CC) -c $< $(CFLAGS) -o $@

Если вы хотите, чтобы расширение файлов зависимостей было .dep вместо.c.dep, вы можете настроить это правило:

%.o : %.c
    # dep generation
    $(CC) -MM $< > $(patsubst %.c,%.dep,%<)
    # compilation 
    $(CC) -c $< $(CFLAGS) -o $@
...