GNU Make и POSIX Make используют общее ядро, чтобы GNU Make понимала make-файлы, предназначенные для POSIX Make, и интерпретировала их одинаково - с очень немногими исключениями. Однако многие Make-файлы GNU используют функции, доступные только в GNU Make. Иногда это умышленно и сознательно; иногда это не так (а иногда это не проблема). Я менее знаком с Microsoft nmake; Я полагаю, что он, вероятно, близок к семантике POSIX Make по своей сути, но у него будет собственный расходящийся набор расширений.
Вообще говоря, то, что создают такие программы, как autoconf, близко к переносимым файлам Makefile.
Основными вещами, которые следует остерегаться при использовании GNU Make, являются все нотации расширенных функций для отображения имен файлов (макросов) в полезные значения. Хотя они, несомненно, полезны, они также являются ловушкой для мобильности.
Обозначения «% .x» для суффиксных правил не определяются POSIX - они распознаются как общее расширение:
Интерпретация целей, содержащих символы '%'
и '"'
, определяется реализацией.