Ответ 1
В руководстве для GNU make они рассказывают об этом конкретном примере при описании функции value
:
Функция значения предоставляет вам возможность использовать значение переменная без ее расширения. Обратите внимание, что это не отмененные расширения, которые уже произошли; например, если вы создаете просто расширенная переменная, ее значение расширяется во время определение; в этом случае функция значения вернет то же самое результат с использованием переменной напрямую.
Синтаксис функции значения:
$(value variable)
Обратите внимание, что переменная - это имя переменной; не ссылка на эту переменную. Поэтому вы обычно не использовали бы a '$ или круглые скобки при написании. (Однако вы можете использовать переменную ссылку в имени, если вы хотите, чтобы имя не было константа.)
Результатом этой функции является строка, содержащая значение переменная, без какого-либо расширения. Например, в этом Makefile:
FOO = $PATH all: @echo $(FOO) @echo $(value FOO)
Первая выходная строка будет ATH, так как "$ P" будет расширен как переменная make, а вторая выходная строка будет текущим значением вашей среды $PATH переменная, так как функция значения избегала расширения.