Donnerstag, Mai 28, 2020

Wie ähnlich/unterschiedlich sind gnu make, microsoft nmake-und posix-standard machen?

Wie ähnlich/Verschieden sind gnu make, microsoft nmake-und posix-standard machen?

Offensichtlich gibt es Dinge wie „welches OS?“, „welche compiler?“ und „was linker ist?“, aber ich beziehe mich speziell auf die syntax, der Semantik und der Befehlszeilen-Optionen des makefiles selbst.

Wenn ich Schreibe, makefiles basiert auf Handbücher für gnu make, was sind die wichtigsten portabilitätsprobleme muss ich beachten?

InformationsquelleAutor Steve314 | 2010-02-17

1 Kommentar

  1. 11

    GNU-Make und POSIX-Sie teilen einen gemeinsamen Kern, so dass GNU Make versteht makefiles gedacht für POSIX Machen, und interpretiert diese auf die gleiche Weise – mit sehr wenigen Ausnahmen. Jedoch, viele GNU-Makefiles verwenden Sie features, die es nur in GNU-Make. Manchmal ist dies bewusst; manchmal ist es nicht (und „manchmal nicht“ ist ein problem). Ich bin weniger vertraut mit Microsoft nmake; ich glaube, es ist wahrscheinlich hew nah an die POSIX-Semantik Machen im Kern, aber es wird seine eigenen abweichenden Satz von Erweiterungen.

    Generell, was die Programme wie autoconf erzeugen, sind in der Nähe portable Makefiles.

    Die wichtigsten Dinge, die zu hüten Sie sich vor der Verwendung von GNU Make sind alle erweiterten Funktion Notationen für die Zuordnung von Datei-Namen (Makros) in nützliche Werte. Während Sie sind zweifellos nützlich, Sie sind auch eine Falle für die Portabilität.

    Den ‚%.x‘ Notationen für die suffix-Regeln sind nicht definiert durch POSIX – Sie sind anerkannt als eine gemeinsame Erweiterung:

    Die interpretation der Ziele, die die Zeichen '%' und '"' wird durch die Implementierung festgelegt.

    • Ich habe laufen in aix machen Programm paar mal. Igitt. Es ist streng POSIX-oder ist es etwas anderes standard-Weise?
    • es ist ziemlich nah an POSIX Make – irgendwo zwischen dieser und einem der System-V-Programme. POSIX Machen, ist so ziemlich eine gemeinsame Teilmenge der verschiedenen Varianten.
    • Auch Kommandozeilen-Optionen (nur relevant für MAKEFLAGS variable), spezielle Ziele (Großbuchstaben, beginnend mit Punkt) und built-in-Regeln variieren sehr. Aber z.B. .PHONY besonderes Ziel scheint zu sein, unterstützt auch außerhalb der Gnu-Welt. Ich denke, dass der einzige sichere Weg ist, testen Sie Ihre makefiles. Wenn Sie auf Nummer sicher gehen wollen, halten sich an POSIX-auch wenn es bestimmt eine sehr begrenzte machen.

Kostenlose Online-Tests