Цитата(zltigo @ Jan 6 2011, 12:17)

Проблема совершенно не понятна, ибо это ее работа по жизни. Опишите зависимости правильно. А "заставалять" скорее нужно компилировать все подряд.
А не подскажите как правильно.
Я не большой специалист в написании Makefile.
С моим Makefile (я его взял из какого-то атмеловского пример) при вызове cs-make компилится все подряд всегда.
cs-make это утилита из пакета Sourcery G++ Lite.
Вот текст моего makefile
Код
# Optimization level, put in comment for debugging
OPTIMIZATION = -Os
# AT91 library directory
#AT91LIB = ../at91lib
# Output file basename
OUTPUT = SAM7X_COLOR_LCD_NOKIA
# Compile for all memories available on the board (this sets $(MEMORIES))
#include $(AT91LIB)/boards/$(BOARD)/board.mak
# Output directories
BIN = bin
OBJ = obj
#-------------------------------------------------------------------------------
# Tools
#-------------------------------------------------------------------------------
# Tool suffix when cross-compiling
CROSS_COMPILE = arm-none-eabi-
#CROSS_COMPILE = arm-kgp-eabi-
#CROSS_COMPILE = c:\nxp\lpcxpresso_3.5\Tools\bin\arm-none-eabi-
# Compilation tools
CC = $(CROSS_COMPILE)gcc
AS = $(CROSS_COMPILE)as
SIZE = $(CROSS_COMPILE)size
STRIP = $(CROSS_COMPILE)strip
OBJCOPY = $(CROSS_COMPILE)objcopy
OBJDUMP = $(CROSS_COMPILE)objdump
# Flags
INCLUDES = -I./ -Iboards -IDrivers/LCD -Iperipherals
INCLUDES += -IDrivers/RTC -IDrivers/BUTTON -Imenu
CFLAGS = -c -mcpu=arm7tdmi -Wall -gdwarf-2 $(OPTIMIZATION) -mapcs-frame
CFLAGS += $(INCLUDES) -fms-extensions
CFLAGS += -Wall
ASFLAGS = -gdwarf-2 $(OPTIMIZATION) $(INCLUDES) -D__ASSEMBLY__
LDFLAGS = -T flash.ld -mcpu=arm7tdmi -nostartfiles -Wl,-Map=$(OUTPUT).map -lm
VPATH += boards
VPATH += menu
VPATH += Drivers/LCD
VPATH += Drivers/RTC
VPATH += Drivers/BUTTON
VPATH += peripherals/twi
VPATH += peripherals/spi
VPATH += peripherals/usart
#-------------------------------------------------------------------------------
# Files
#-------------------------------------------------------------------------------
# Objects built from C source files
C_OBJECTS = board_lowlevel.o
C_OBJECTS += main.o
C_OBJECTS += spi.o
C_OBJECTS += lcd.o
C_OBJECTS += lib_twi.o usart.o
C_OBJECTS += ISL1208.o
C_OBJECTS += push_button.o
C_OBJECTS += menu.o
# Objects built from Assembly source files
ASM_OBJECTS = board_cstartup.o
# Append OBJ and BIN directories to output filename
OUTPUT := $(BIN)/$(OUTPUT)
#-------------------------------------------------------------------------------
# Rules
#-------------------------------------------------------------------------------
all: gccversion $(BIN) $(OBJ) flash
$(BIN) $(OBJ):
mkdir $@
define RULES
C_OBJECTS_$(1) = $(addprefix $(OBJ)/, $(C_OBJECTS))
ASM_OBJECTS_$(1) = $(addprefix $(OBJ)/, $(ASM_OBJECTS))
$(1): $$(ASM_OBJECTS_$(1)) $$(C_OBJECTS_$(1))
$(CC) $(LDFLAGS) -o $(OUTPUT).elf $$^
$(OBJCOPY) -O ihex $(OUTPUT).elf $(OUTPUT).hex
$(OBJDUMP) -h -z -S $(OUTPUT).elf > $(OUTPUT).lss
$(SIZE) $$^ $(OUTPUT).elf
$$(C_OBJECTS_$(1)): $(OBJ)/%.o: %.c Makefile $(OBJ) $(BIN)
$(CC) $(CFLAGS) -D$(1) -o $$@ $$<
$$(ASM_OBJECTS_$(1)): $(OBJ)/%.o: %.S Makefile $(OBJ) $(BIN)
$(CC) $(ASFLAGS) -D$(1) -c -o $$@ $$<
debug_$(1): $(1)
perl ../resources/gdb/debug.pl $(OUTPUT)-$(1).elf
endef
$(foreach MEMORY, flash, $(eval $(call RULES,flash)))
# Display compiler version information.
gccversion :
@$(CC) --version
clean:
-cs-rm -f $(OBJ)/*.o $(BIN)/*.hex $(BIN)/*.elf $(BIN)/*.map $(BIN)/*.lss