Насколько похожи / отличаются GNU Make, Microsoft NMAKE и Posix Standard Make? - PullRequest
23 голосов
/ 17 февраля 2010

Насколько похожи / различны марочные решения gnu, microsoft nmake и posix standard?

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

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

1 Ответ

11 голосов
/ 17 февраля 2010

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

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

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

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

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

...