Как говорит Бета, info
не "позволяет вам видеть значение этой строки, которая оценивается". info
расширяет свой аргумент и выводит его на стандартный вывод. «Расширяет» означает, что он разрешает любые ссылки на переменные, это не означает, что он интерпретируется как команда makefile. Так что, если вы запустите $(info hi)
, он напечатает «привет». Если вы запускаете $(info foo = bar)
, если печатает foo = bar
, но не , установите значение переменной foo
равным bar
.
Для использования !=
обратите внимание, что эта функция была добавлена в GNU make 4.0. Если ваша версия старше этой, то это назначение не будет соответствовать вашим ожиданиям. В частности, строка типа FOO!=echo bar
будет интерпретироваться так, как если бы она была FOO! = echo bar
... другими словами, она устанавливает переменную make с именем FOO!
.
Лично я всегда помещаю пробелы вокруг операторов присваивания в моих make-файлах ... это ясно дает понять, что они являются присваиваниями, а не присваиваниями переменных оболочки (не то, что это ни в коем случае не должно быть понятно для кого-либо кто знает синтаксис makefile, но ...). В более новых версиях GNU make имена переменных не могут содержать пробелов.