Насколько похожи / отличаются 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 - они распознаются как общее расширение:
Интерпретация целей, содержащих символы
'%'
а также'"'
определяется реализацией.