Gibt es eine bekannte Möglichkeit, Linux dazu zu bringen, make
die unbeabsichtigte Verwendung von GNU-Make-spezifischen Erweiterungen in Makefile abzulehnen, wenn das Makefile anderer unter Linux bearbeitet oder verwendet wird? Ich meine, GNU-Make so einschränken, dass es sich wie make
in POSIX angegeben verhält, und GNU-Make-spezifische Erweiterungen ablehnen?
Das .POSIX
spezielle Ziel reicht laut „ 4.9 Spezielle integrierte Zielnamen (gnu.org) “ nicht aus. In der Manpage wird hierfür keine Befehlszeilenoption erwähnt.
Die Verwendung eines anderen make
Dienstprogramms kann eine Option sein.
- Update 2018-10-19 -
Ich habe immer noch keine direkte Antwort auf meine Frage gefunden, aber hier ist zumindest ein Dokument zu diesem Problem, ein Dokument, das zum Zeitpunkt meiner Frage noch nicht vorhanden war: Ein Tutorial zu tragbaren Makefiles (nullprogram.com) .
make
, die für die Verwendung mit dem fraglichen "Makefile des anderen" vorgesehen war. Sie haben auch gesagt, dass das ".POSIX
Ziel " von GNU laut Ihrer Lektüre einiger Dokumentationen nicht ausreicht, aber Sie haben dies nicht anhand eines tatsächlichen Falls demonstriert, der ein wenig XY-problematisch ist .Antworten:
Ich bin mir ziemlich sicher, dass es keine Möglichkeit gibt, GNU-Erweiterungen zu deaktivieren. Das
.POSIX
Ziel verbessert die Kompatibilität, deaktiviert jedoch keine kompatiblen Erweiterungen wie Funktionen, proprietäre Punktziele,%
Muster in Zielen usw.Ich kenne keine make-Implementierung, die sich an POSIX-Funktionen hält. Zum Beispiel haben MINIX, Solaris und OpenBSD alle ihre eigenen Erweiterungen. Sie könnten zumindest versuchen, Ihre Programme mit diesen vier Implementierungen zu erstellen (vorausgesetzt, Ihre Programme bauen auf all diesen Plattformen auf), was Ihnen in der Praxis eine ziemlich gute Portabilitätssicherheit bietet. Fügen Sie Windows mit dem
make
Dienstprogramm von Visual Studio sowie einem Port einiger Unix-Shell-Tools hinzu, wenn Sie ein nicht freies Betriebssystem verwenden können (ich denke, es gibt eine kostenlose Version von VS, die ausreichen würde).quelle
pmake
Portabilität meiner Makefiles. Es wird behauptet, es sei Geschmack von NetBSD. (In neueren Versionen von Debian ist esbmake
.)