я могу сделать:Как передать все аргументы командной строки программе в Makefile?
all:
$(CC) -DFOO=$(FOO) -DBAR=$(BAR) main.c
И назвать его:
make FOO=foo BAR=bar
Но я хочу более общее решение таким образом, что я не придется писать все возможные переменные в вызове компилятора линия. Я знаю, например, что переменная MAKECMDGOALS имеет все цели из командной строки. Есть ли какая-либо переменная MAKECMDVARS, содержащая все переменные из командной строки? Поэтому я мог бы сделать что-то вроде этого:
CONFIGS = $(addprefix -D, $(MAKECMDVARS))
all:
$(CC) $(CONFIGS) main.c
Как вы хотите, чтобы отличить цели от переменных? То есть, если вы вызываете 'make foo bar', нужно попробовать * построить *' foo' и 'bar' или поместить эти имена в' MAKECMDVARS'? – Beta
@Beta, я рассматриваю переменную что-то вроде 'foo = bar'. Таким образом, 'make foo bar' должен построить' foo' и 'bar'. И 'make FOO = foo BAR = bar baz' должен положить' FOO = foo BAR = bar' в 'MAKECMDVARS' и построить' baz'. – borges
Почему бы не сделать CFLAGS = '- DFOO = foo -DBAR = bar' baz'? – Beta