My Makefile имеет следующие макросы определены:Объединяя цели Makefile в более многоразовой цель
# Output location
OUT_DIR = Build
# Source location
SOURCE_DIR = Src
# Complete list of source files to be compiled
SOURCES = $(SOURCE_DIR)/main.c
SOURCES += $(SOURCE_DIR)/startup.s
SOURCES += System/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c
# Separate out .c and .s source files
C_SOURCES = $(filter %.c, $(SOURCES))
ASM_SOURCES = $(filter %.s, $(SOURCES))
# Rename .c to .o, and replace the path with $(OUT_DIR)/
# For example Src/main.c becomes Build/main.o
OBJECTS = $(addprefix $(OUT_DIR)/, $(notdir $(C_SOURCES:.c=.o)))
OBJECTS += $(addprefix $(OUT_DIR)/, $(notdir $(ASM_SOURCES:.s=.o)))
... и у меня есть следующая цель, которая прослушивала меня немного:
$(OUT_DIR)/%.o : $(SOURCE_DIR)/%.c
@echo "Compiling $<"
$(CC) $(CFLAGS) $(INCLUDES) $(DEFINES) $< -o $(OUT_DIR)/$(notdir [email protected])
@echo
$(OUT_DIR)/%.o : System/CMSIS/Device/ST/STM32F4xx/Source/Templates/%.c
@echo "Compiling $<"
$(CC) $(CFLAGS) $(INCLUDES) $(DEFINES) $< -o $(OUT_DIR)/$(notdir [email protected])
@echo
Есть способ, которым я могу определить целевую, без указания пути? Кажется, слишком много повторений ...
Цели оба отлично работают, но я просто чувствую, что нет необходимости повторять цели, подобные этому.
ли с помощью VPATH, как эта помощь: 'VPATH = Src: System/CMSIS/Device/ST/STM32F4xx/Source/Templates' –