Я запустил простой make-файл для моего проекта (цель MS-windows, MinGW) со следующим:
CFLAGS = -g -O0 -Wall -std=c99
CC = gcc
CPP = g++
LIBS =
PBDUMPER = pbdumper.exe
all: $(PBDUMPER)
$(PBDUMPER): pbdumper.c
$(CC) $(CFLAGS) -o $@ $< $(LIBS)
clean:
rm -f $(PBDUMPER)
.PHONY: clean
Теперь я хотел бы выбрать между выпуском и отладочной компиляцией.
Я изменил определения переменных и неявное правило для отладки:
CFLAGS_COMMON = -std=c99
CFLAGS_DEBUG = -g -O0 -Wall
CFLAGS_RELEASE = -O2 -Wall
...
$(PBDUMPER): pbdumper.c
$(CC) $(CFLAGS_COMMON) $(CFLAGS_DEBUG) -o $@ $< $(LIBS)
Но для выпуска мне пришлось бы изменить неявное правило, чтобы использовать CFLAGS_RELEASE, что, я полагаю, неправильный способ сделать.
Я посмотрел руководство Gnu Make в разделах «неявные правила» и «автоматические переменные», но лучшего способа не нашел.
Не могли бы вы показать мне правильный путь, либо условно определив CFLAGS, либо, возможно, используя "if" в неявных правилах, основанных на аромате, выбранном для компиляции? Или, может быть, другой метод.