Ограничение поведения GNU-Make до POSIX Make

12

Известен ли способ заставить Linux makeотклонить непреднамеренное использование определенных расширений GNU-Make в Makefile при редактировании или использовании другого Makefile в Linux? Я имею в виду, ограничивать ли GNU-Make вести себя так, как makeуказано в POSIX, и отклонять какие-либо конкретные расширения GNU-Make?

.POSIXСпециальная цель не достаточно, в соответствии с « 4.9 Special Встроенный Целевых имен (gnu.org) ». Страница man не упоминает параметр командной строки для этого.

Использование другой makeутилиты может быть вариантом.

- Обновление 2018-10-19 -

Я до сих пор не нашел прямого ответа на мой вопрос, но вот по крайней мере документ об этой проблеме, документ, которого не было в то время, когда у меня был этот вопрос:  Учебное пособие по переносимым файлам сборки (nullprogram.com) .

Hibou57
источник
Глядя на этот список , не ясно, существует ли когда-либо строгая версия POSIX, поэтому, возможно, имеет смысл начать с того, makeкоторый был предназначен для использования с «другим Makefile», о котором идет речь. Вы также сказали, что « .POSIXцель не является достаточной, согласно» вашему прочтению какой-либо документации, но вы не продемонстрировали это с реальным случаем, что немного проблематично для XY .
Златовласка
@goldilocks, X - это проверка ограничения, которое я хотел бы придерживаться (для редактирования и изменения) из-за отсутствия овладения спецификациями GNU-Make и чтобы я знал о наличии некоторых особенностей (когда они есть). Проверка глаз подвержена ошибкам, не может быть механизирована, и я предпочитаю избегать подверженных ошибкам домашних фильтров grep / sed / awk, чтобы проверить и привлечь мое внимание.
Hibou57
Я тоже не волшебник, но не лучше ли спросить об этом напрямую? (Если так, Stack Overflow может быть лучше для этого.)
Златовласка
Вы можете быть правы. Кстати, после того, как я его опубликовал, я сначала удалил, а затем снова удалил этот вопрос (был не уверен в месте). Позже я могу повторно спросить о переполнении стека, как вы предлагаете. Спасибо за вашу заботу.
Hibou57
1
Существует старый, но связанный с этим вопрос о переполнении стека : насколько похожи / различаются gnu make, microsoft nmake и posix standard make?
Palec

Ответы:

6

Я уверен, что нет возможности отключить расширения GNU make. .POSIXЦель улучшает совместимость , но не отключает совместимые расширения , такие как функции, собственные цели, точечные %узоры в цели и т.д.

Я не знаю ни одной реализации make, которая бы соответствовала функциям POSIX. Например, MINIX, Solaris, OpenBSD имеют свои собственные расширения. Вы можете, по крайней мере, попытаться построить свои программы с этими четырьмя реализациями (при условии, что ваши программы построены на всех этих платформах), что даст вам довольно хорошую гарантию переносимости на практике. makeЕсли вы можете использовать несвободную ОС, добавьте Windows с утилитой из Visual Studio, а также портом некоторых инструментов оболочки Unix (я думаю, что будет достаточно бесплатной версии VS).

Жиль "ТАК - перестань быть злым"
источник
3
В Debian Linux я использую pmakeдля проверки переносимости моих make-файлов. Он утверждает, что это сделать вкус из NetBSD. (В более новых версиях Debian это так bmake.)
Palec