LINUX.ORG.RU

История изменений

Исправление xaizek, (текущая версия) :

MAKEFLAGS = -j 1
CC = gcc

DOBJ = exe/obj/
DMOD = exe/mod/
DEXE = exe/

MKDIRS  = $(DOBJ) $(DMOD) $(DEXE)

#auxiliary variables
COTEXT = "Compile $(<F)"
LITEXT = "Assemble $@"

DTESTS=src/tests/
TESTS=$(basename $(notdir $(wildcard $(DTESTS)/*.c)))
TESTSOBJ=$(addsuffix .o, $(TESTS))
$(info TESTS: $(TESTS))
$(info TESTSOBJ: $(TESTSOBJ))

all: $(addprefix $(DEXE),$(TESTS))
#building rules
$(addprefix $(DEXE),$(TESTS)): $(DEXE)%: $(DOBJ)%.o $(DOBJ)lib.o | $(MKDIRS)
	@echo $(LITEXT)
	@$(CC) $^ -o $@

#compiling rules
$(DOBJ)lib.o: src/lib/lib.c
	@echo $(COTEXT)
	@$(CC) -c $< -o $@

$(addprefix $(DOBJ),$(TESTSOBJ)): $(DOBJ)%.o: $(DTESTS)%.c \
	$(DOBJ)lib.o
	@echo $(COTEXT)
	@$(CC) -c $< -o $@

$(MKDIRS):
	mkdir -p $@
$ make
TESTS: test-2 test-1
TESTSOBJ: test-2.o test-1.o
XXX: exe/test-2 exe/test-1
Compile lib.c
Compile test-2.c
mkdir -p exe/mod/
Assemble exe/test-2
Compile test-1.c
Assemble exe/test-1

Исходная версия xaizek, :

MAKEFLAGS = -j 1
CC = gcc

DOBJ = exe/obj/
DMOD = exe/mod/
DEXE = exe/

MKDIRS  = $(DOBJ) $(DMOD) $(DEXE)

#auxiliary variables
COTEXT = "Compile $(<F)"
LITEXT = "Assemble $@"

DTESTS=src/tests/
TESTS=$(basename $(notdir $(wildcard $(DTESTS)/*.c)))
TESTSOBJ=$(addsuffix .o, $(TESTS))
$(info TESTS: $(TESTS))
$(info TESTSOBJ: $(TESTSOBJ))
$(info XXX: $(addprefix $(DEXE),$(TESTS)))

all: $(addprefix $(DEXE),$(TESTS))
#building rules
$(addprefix $(DEXE),$(TESTS)): $(DEXE)%: $(DOBJ)%.o $(DOBJ)lib.o | $(MKDIRS)
	@echo $(LITEXT)
	@$(CC) $^ -o $@

#compiling rules
$(DOBJ)lib.o: src/lib/lib.c
	@echo $(COTEXT)
	@$(CC) -c $< -o $@

$(addprefix $(DOBJ),$(TESTSOBJ)): $(DOBJ)%.o: $(DTESTS)%.c \
	$(DOBJ)lib.o
	@echo $(COTEXT)
	@$(CC) -c $< -o $@

$(MKDIRS):
	mkdir -p $@
$ make
TESTS: test-2 test-1
TESTSOBJ: test-2.o test-1.o
XXX: exe/test-2 exe/test-1
Compile lib.c
Compile test-2.c
mkdir -p exe/mod/
Assemble exe/test-2
Compile test-1.c
Assemble exe/test-1