Здравствуйте. Написал простенький Makefile. При его вызове все исходники из директории ./src собираются в файл ./bin/firmware.elf. Сейчас объектные файлы остаются в директории ./src. Что поправить, чтобы объектные файлы компилировались в ./bin ? Сейчас:
$ tree
.
├── bin
│ └── firmware.elf
├── Makefile
└── src
├── blink.c
├── blink.h
├── blink.o
├── main.c
└── main.o
$ tree
.
├── bin
│ ├── firmware.elf
│ ├── blink.o
│ └── main.o
├── Makefile
└── src
├── blink.c
├── blink.h
└── main.с
TARGET = firmware.elf
DEVICE = msp430f5529
SRC_DIR = ./src
BIN_DIR = ./bin
# Каталог компилятора
GCC_DIR = ~/ti/gcc/bin
# Путь до компилятора и утилит
CC = $(GCC_DIR)/msp430-elf-gcc
SIZE = $(GCC_DIR)/msp430-elf-size
# Путь до программатора
MSPDEBUG = /usr/local/bin/mspdebug
# Путь до системных заголовочных файлов
SUPPORT_FILE_DIR = ~/ti/gcc/include
# Ключи компилятора
CFLAGS = -I $(SUPPORT_FILE_DIR) -mmcu=$(DEVICE) -O2 -g -fdata-sections -ffunction-sections -Wall -std=gnu99
# Ключи линкера
LFLAGS = -L $(SUPPORT_FILE_DIR) -T $(DEVICE).ld -Wl,-gc-sections
###############################################################################
.PHONY: clean
# Получаем списоки файлов
SRCS = $(wildcard $(SRC_DIR)/*.c)
OBJS = $(SRCS:.c=.o)
all: $(TARGET)
$(SIZE) $(BIN_DIR)/$(TARGET)
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) $(LFLAGS) -o $(BIN_DIR)/$(TARGET) $(OBJS)
.c.o:
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -rf $(BIN_DIR)/$(TARGET) $(OBJS)
program: all
$(MSPDEBUG) tilib "prog $(BIN_DIR)/$(TARGET) reset"