Как я могу установить значение переменной в make-файле в зависимости от MAKEFLAG?

Мой makefile компилирует мою программу для отладки. Под этим я подразумеваю, что он передает -g -D DEBUG компилятору. Я хочу иметь возможность передать -nd для nне debug или -p для pпроизводства, чтобы удалить флаги отладки из компилятора. Для этого мне нужно каким-то образом поместить это в синтаксис make: "Если MAKEFLAGS не nd, тогда установите CFLAGS в -g -D DEBUG, иначе оставьте его пустым"

Как я могу это сделать?


person Hubro    schedule 10.10.2011    source источник
comment
stackoverflow.com/questions/5127977/   -  person Maxim Egorushkin    schedule 10.10.2011
comment
Нет, вы имеете в виду, что это не «nd» или не содержит «nd» или «p»?   -  person Beta    schedule 10.10.2011
comment
MAKEFLAGS это встроенная переменная make? Вы имеете в виду MAKEFLAGS или какую-то другую переменную, специфичную для проекта?   -  person Etan Reisner    schedule 25.02.2015


Ответы (1)


Если все, что вам нужно, это -nd, это сделает это:

ifeq (,$(findstring nd,$(MAKEFLAGS)))
FOO = -g -D DEBUG
endif

Если вы также заботитесь о -p, это не так чисто:

FOO = -g -D DEBUG
ifneq (,$(findstring nd,$(MAKEFLAGS)))
FOO =
endif

ifneq (,$(findstring p,$(MAKEFLAGS)))
FOO =
endif
person Beta    schedule 10.10.2011
comment
Бит $(findstring nd,...) также срабатывает, если передается make --warn-undefined-variables (при использовании для этого $(MAKEFLAGS), а не какой-либо другой пользовательской переменной). - person Etan Reisner; 25.02.2015
comment
@EtanReisner: Хороший вопрос. Я бы попытался пуленепробиваемо, но не похоже, что многие люди интересуются этим вопросом. - person Beta; 25.02.2015
comment
Эта деталь на самом деле несколько раздражает, так как руководство тоже ошибается (в разделе 7.3). - person Etan Reisner; 25.02.2015