Насколько похожи / отличаются GNU Make, Microsoft NMAKE и Posix Standard Make?

Насколько похожи / отличаются GNU Make, Microsoft NMAKE и Posix Standard Make?

Очевидно, есть такие вещи, как "какая ОС?", "Какой компилятор?" и "какой компоновщик?", но я имею в виду именно синтаксис, семантику и параметры командной строки самих make-файлов.

Если я пишу make-файлы, основанные на руководствах для gnu make, о каких наиболее важных проблемах переносимости мне нужно знать?

1 ответ

Решение

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

Вообще говоря, то, что создают программы типа autoconf, близко к переносимым файлам Makefile.

Основными вещами, которые следует остерегаться при использовании GNU Make, являются все расширенные нотации функций для отображения имен файлов (макросов) в полезные значения. Хотя они, несомненно, полезны, они также являются ловушкой для мобильности.

Обозначения "%.x" для суффиксных правил не определены в POSIX - они распознаются как общее расширение:

Интерпретация целей, содержащих символы '%' а также '"' определяется реализацией.

Другие вопросы по тегам