Ograniczanie zachowania GNU ‑ Make do POSIX Make


12

Czy istnieje znany sposób, aby Linuks makeodrzucał 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ę makeokreślonego w POSIX i odrzucenie jakichkolwiek rozszerzeń GNU-Make?

Cel .POSIXspecjalny nie wystarczy, zgodnie z „ 4.9 Specjalnymi wbudowanymi nazwami docelowymi (gnu.org) ”. Strona man nie wspomina o tym opcji wiersza poleceń.

makeOpcją 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) .


Patrząc na tę listę , nie jest jasne, czy istnieje, czy kiedykolwiek istniał ścisły znak POSIX - więc może bardziej sensowne jest zacząć od tego, makektóry był przeznaczony do użycia z danym Makefile innego. Powiedziałeś również, że .POSIXcel 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 .
goldilocks

@Goldilocks, X polega na sprawdzeniu ograniczenia, którego chciałbym się trzymać (do edycji i modyfikacji) z powodu braku opanowania specyfiki GNU-Make i aby pomóc mi zdawać sobie sprawę z obecności pewnych specyficzności (jeśli są). Sprawdzanie wzroku jest podatne na błędy, nie może być zmechanizowane i wolę unikać podatnych na błędy domowych filtrów grep / sed / awk, aby sprawdzić i zwrócić moją uwagę.
Hibou57

Nie jestem też magiem, ale czy nie lepiej byłoby zapytać o to bezpośrednio? (Jeśli tak, to Stack Overflow może być lepszym miejscem do tego.)
goldilocks

Możesz mieć rację. Nawiasem mówiąc, po tym, jak opublikowałem, najpierw usunąłem, a następnie ponownie usunąłem to pytanie (nie byłem pewien tego miejsca). Mogę później ponownie zapytać o Przepełnienie stosu, jak sugerujesz. Dzięki za troskę.
Hibou57

Odpowiedzi:


6

Jestem prawie pewien, że nie ma możliwości wyłączenia rozszerzeń GNU make. .POSIXCel poprawia kompatybilność ale nie wyłączać kompatybilnych rozszerzeń, takich jak funkcje, własnych celów kropki, %wzory w celach itp

Nie 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ą makenarzę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).


3
W systemie Debian Linux używam pmakedo testowania przenośności plików makefile. Twierdzi, że robi smak z NetBSD. (W nowszych wersjach Debiana to jest bmake.)
Palec
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.