Czy istnieje znany sposób, aby Linuks make
odrzucał niezamierzone użycie określonych rozszerzeń GNU-Make w Makefile podczas edycji lub używania Makefile innych w Linuksie? Mam na myśli ograniczenie GNU-Make do zachowania się make
określonego w POSIX i odrzucenie jakichkolwiek rozszerzeń GNU-Make?
Cel .POSIX
specjalny nie wystarczy, zgodnie z „ 4.9 Specjalnymi wbudowanymi nazwami docelowymi (gnu.org) ”. Strona man nie wspomina o tym opcji wiersza poleceń.
make
Opcją może być użycie innego narzędzia.
- Aktualizacja 2018-10-19 -
Nadal nie znalazłem bezpośredniej odpowiedzi na moje pytanie, ale tutaj jest przynajmniej dokument dotyczący tego problemu, dokument, który nie istniał w czasie, gdy miałem to pytanie: Samouczek na temat przenośnych plików Makefiles (nullprogram.com) .
make
który był przeznaczony do użycia z danym Makefile innego. Powiedziałeś również, że „.POSIX
cel GNU nie jest wystarczający, zgodnie z” twoją lekturą niektórych dokumentów, ale nie wykazałeś tego w przypadku, który jest trochę problematyczny dla XY .Odpowiedzi:
Jestem prawie pewien, że nie ma możliwości wyłączenia rozszerzeń GNU make.
.POSIX
Cel poprawia kompatybilność ale nie wyłączać kompatybilnych rozszerzeń, takich jak funkcje, własnych celów kropki,%
wzory w celach itpNie znam żadnej implementacji make zgodnej z funkcjami POSIX. Na przykład MINIX, Solaris, OpenBSD mają własne rozszerzenia. Możesz przynajmniej spróbować zbudować swoje programy z tymi czterema implementacjami (zakładając, że twoje programy budują na wszystkich tych platformach), co da ci całkiem dobre zapewnienie przenośności w praktyce. Dodaj system Windows za pomocą
make
narzędzia Visual Studio oraz port niektórych narzędzi powłoki Unix, jeśli możesz użyć niewolnego systemu operacyjnego (myślę, że wystarczyłaby darmowa wersja VS).źródło
pmake
do testowania przenośności plików makefile. Twierdzi, że robi smak z NetBSD. (W nowszych wersjach Debiana to jestbmake
.)