LINUX.ORG.RU

sources отдельно, objects отдельно


0

1

Сочинил я вот такой makefile:

EXECUTABLE=bin/test
CC=gcc
CFLAGS=-c -Wall
LDFLAGS=

SOURCES=src
SEARCH_WILDCARDS=$(addsuffix /*.c,$(SOURCES))

$(EXECUTABLE): $(notdir $(patsubst %c,%o,$(wildcard $(SEARCH_WILDCARDS))))
	$(CC) $(LDFLAGS) $^ -o $@

VPATH=$(SOURCES)

%.o: %.c
	$(CC) $(CFLAGS) $(addprefix -I,$(SOURCES)) $< # -o obj/$(notdir $<)

clean:
	rm -f *.o test
чтобы sources лежали в src, результаты сборки - в bin. Вот только не получается сложить объектники в obj/.

Как это сделать?


Ответ на: Спасибо, кэп! от braboar

Так тебе не ехать, а шашечки?

Что ж, вводи переменную, которая указывает на путь к обьектникам и используй ее в каждом правиле, где есть путь к обьектнику.

AF ★★★
()
EXECUTABLE=bin/test
CFLAGS=-Wall
OBJDIR=obj
VPATH=src

SOURCES := $(wildcard src/*.c)
OBJECTS := $(patsubst %.c, $(OBJDIR)/%.o, $(notdir $(SOURCES)))

$(EXECUTABLE): $(OBJECTS)
	$(CC) $(LDFLAGS) $^ -o $@

$(OBJDIR)/%.o: %.c
	$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
unsigned ★★★★
()

как-то так. Нижне SOURCES список файлов в директории source/

bname: $(patsubst %,_obj/%.o, $(SOURCES))
    $(CPP) -o $@ $^ -lc

_obj/%.c.o : source/%.c
    $(CC) -std=c99 -c ${CFLAGS} -o $@ $<

mashina ★★★★★
()
Ответ на: комментарий от AF

Не шашечки

В основных проектах и так CMake/qmake.

А это - в целях самосовершенствования.

braboar
() автор топика
Ответ на: комментарий от braboar

Наркоман мазохист на лоре, срочно носилки и санитаров!

bhfq ★★★★★
()
Последнее исправление: bhfq (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.