Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guile
После трёх лет разработки представлен релиз системы сборки GNU Make 4.0. Наиболее существенным новшеством является опциональная поддержка языка GNU Guile (одна из реализаций языка Scheme) для определения дополнительных функций в make-файлах. Проверить в скрипте поддержку Guile можно путём оценки наличия ключевого слова guile в переменной ».FEATURES». При наличии поддержки Guile, появляется возможность загрузки/определения Guile-скриптов с реализацией дополнительных функций и их использование в сценарии сборки. Из других изменений отмечается:
Новый оператор »!=» для вызова внешних shell-команд, выступающий в качестве альтернативы функции $(shell …) и реализованный для совместимости с BSD make. Например, вместо «var:= $(shell echo *.c)» можно написать «var!= echo *.c». Появление нового оператора может привести к нарушению обратной совместимости, так как присвоение значений переменным оканчивающимся на символ »!» теперь может интерпретироваться как вызов shell-команд. Чтобы избежать подобного поведения следует использовать пробел для явного отделения имени переменной («var! = value» вместо «var!= value»); Новый оператор присвоения »::=», определённый в стандарте POSIX 2012 и идентичный ранее доступному оператору »:=»; Новая функция $(file …) для организации записи в файл; Новая опция командной строки »--output-sync» (»-O»), включающая режим группировки вывода по целям и рекурсивным вызовам make, что позволяет обеспечить наглядность вывода при сборке с распараллеливанием в несколько потоков (вывод разных экземпляров make не будет смешиваться); Реализация режима трассировки, активируемого через указание опции »--trace». При включении режима выводятся полные сведения о всех шагах сборки с указанием файла и номера строки. Данные выводятся даже, если указана переменная .SILENT или применён префикс »@»; В опцию »--debug» добавлена поддержка флага «n» (none) для принудительного отключения всех отладочных настроек; Сервер управления работами (jobserver), используемый для оптимизации выполнения параллельной сборки проектов в несколько потоков, адаптирован для работы на платформе Windows. Для Windows также обеспечена поддержка специальной сборочной цели .ONESHELL; Указание опций »-r» и »-R» в переменной MAKEFLAGS внутри make-файла теперь приводит к удалению всех встроенных правил и переменных.
© OpenNet