Известен ли способ заставить 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) .
make
который был предназначен для использования с «другим Makefile», о котором идет речь. Вы также сказали, что «.POSIX
цель не является достаточной, согласно» вашему прочтению какой-либо документации, но вы не продемонстрировали это с реальным случаем, что немного проблематично для XY .Ответы:
Я уверен, что нет возможности отключить расширения GNU make.
.POSIX
Цель улучшает совместимость , но не отключает совместимые расширения , такие как функции, собственные цели, точечные%
узоры в цели и т.д.Я не знаю ни одной реализации make, которая бы соответствовала функциям POSIX. Например, MINIX, Solaris, OpenBSD имеют свои собственные расширения. Вы можете, по крайней мере, попытаться построить свои программы с этими четырьмя реализациями (при условии, что ваши программы построены на всех этих платформах), что даст вам довольно хорошую гарантию переносимости на практике.
make
Если вы можете использовать несвободную ОС, добавьте Windows с утилитой из Visual Studio, а также портом некоторых инструментов оболочки Unix (я думаю, что будет достаточно бесплатной версии VS).источник
pmake
для проверки переносимости моих make-файлов. Он утверждает, что это сделать вкус из NetBSD. (В более новых версиях Debian это такbmake
.)