Поведение $ (MAKEFLAGS) с просто раскрытой переменной - PullRequest
1 голос
/ 09 апреля 2019

Я не могу понять поведение переменной $(MAKEFLAGS). Чтобы объяснить, что я хочу сказать, я написал очень простой make-файл:

$(info *** $(MAKEFLAGS))
STRING := $(MAKEFLAGS)
all:
    echo MAKEFLAGS=$(MAKEFLAGS)
    echo STRING=$(STRING)

запуск make в командной строке с некоторыми переменными:

$ make DEBUG=1 INST=/tmp
*** 
echo MAKEFLAGS= -- INST=/tmp DEBUG=1
MAKEFLAGS= -- INST=/tmp DEBUG=1
echo STRING=
STRING=

Интересно, как я могу присвоить $(MAKEFLAGS) просто расширенной переменной (с :=) и почему я не могу увидеть ее значение с $(info ...)

1 Ответ

0 голосов
/ 09 апреля 2019

Интересно, как я могу присвоить $ (MAKEFLAGS) просто расширенной переменной (с: =)

А почему бы и нет?Грубо говоря, «простое назначение» означает, что значение правой части будет расширяться на месте до тех пор, пока не будет найдено больше $.Таким образом, вы можете назначить что угодно «простой» переменной.

, почему я не могу увидеть ее значение с помощью $ (info ...)

You вижу, оно пустое.По крайней мере, он пуст во время предварительной обработки «тела» make-файла (и это также, почему STRING всегда пусто - это значение MAKEFLAGS в строке # 2), хотя и не пусто при расширении рецепта.Ну, в конце концов, это особая переменная.

...