C_SOURCES := main.c # Make an archive that has two object files with the same name, but # different timestamps. Do it all in one rule so that the timestamps # can be controlled without confusing Make. libfoo.a: a.c sub1/a.c $(CC) $(CFLAGS) -c $(<D)/a.c -o a.o mkdir -p sub1 $(CC) $(CFLAGS) -c $(<D)/sub1/a.c -o sub1/a.o touch -t '198001010000.00' a.o touch -t '198001010000.01' sub1/a.o $(AR) $(ARFLAGS) $@ a.o sub1/a.o rm a.o sub1/a.o include Makefile.rules # Needs to come after include OBJECTS += libfoo.a $(EXE) : libfoo.a .DEFAULT_GOAL := $(EXE)