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