LINUX.ORG.RU

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

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

Вот у меня с этим проблемы.

Либо пишем

debug: build/debug/app

release: build/release/app

build/debug/app: build/debug/main.o
  $(CC) ...

build/debug/%.o: src/%.c
  $(CC) ...

build/release/app: build/release/main.o
  $(CC) ...

build/release/%.o: src/%.c
  $(CC) ...

Т.е. дублируем правила для каждой конфигурации. Чтобы не дублировать - придётся делать генерацию кусков через eval/call. В общем это уже не простой makefile получается.

Либо пишем

app: build/$(target)/app

build/$(target)/app: build/$(target)/main.o
  $(CC) ...

build/$(target)/%.o: src/%.c
  $(CC) ...

и вызываем через make target=debug app. Вроде относительно просто, но вызывать неудобно, автодополнение не работает (в первом случае zsh как-то умеет парсить Makefile и выдаёт автодополнение, к чему я уже привык) и вообще как-то странновато это всё выглядит…

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

Вот у меня с этим проблемы.

Либо пишем

debug: build/debug/app

release: build/release/app

build/debug/app: build/debug/main.o
  $(CC) ...

build/debug/%.o: src/%.c
  $(CC) ...

build/release/app: build/release/main.o
  $(CC) ...

build/release/%.o: src/%.c
  $(CC) ...

Т.е. дублируем правила для каждой конфигурации. Чтобы не дублировать - придётся делать генерацию кусков через eval/call. В общем это уже не простой makefile получается.

Либо пишем

app: build/$(target)/app

build/$(target)/app: build/$(target)/main.o
  $(CC) ...

build/$(target)/%.o: src/%.c
  $(CC) ...

и вызываем через make target=debug app. Вроде относительно просто, но вызывать неудобно, автодополнение не работает (в первом случае zsh как-то умеет парсить Makefile и выдаёт автодополнение, к чему я уже привык).