Ответ 1
Это зависит от вкуса make. С помощью GNU Make вы можете использовать :=
вместо =
, как в
TMP:=$(shell mktemp -d /tmp/.XXXXX)
Изменить. Как указано Novelocrat, назначение =
отличается от присваивания :=
тем, что значения, назначенные с помощью =
, будут оцениваться во время подстановки (и, следовательно, каждый раз переменная), тогда как :=
назначенные переменные будут иметь свои значения, оцененные только один раз (во время назначения), и, следовательно, после этого значения фиксируются. См. документация GNU Make для более подробного объяснения.
Для того чтобы значение действительно было постоянным после назначения, оно не должно содержать никаких частей, которые могут быть специальными для оболочки (какие вызовы make
для фактического запуска правил обновления и т.д.). в частности, обратные пути лучше избегать. Вместо этого используйте GNU make
встроенную функцию оболочки и аналогичную для достижения ваших целей.