Die Portabilität eines Makefiles ist nicht direkt bezogen auf das Betriebssystem, sondern auf die Implementierung von make auf der fraglichen Plattform. (Es gibt also eine indirekte Beziehung, in der die Implementierung von make aus dem OS erraten werden kann (aber NICHT genau).) Im Allgemeinen ist dies ein schwieriges Problem, für das viele Lösungen vorgeschlagen wurden. Vielleicht möchten Sie in Automake suchen, die portable Makefiles für Sie generieren wird. Automake's Lösung für das Problem, Flags für verschiedene Unixe zu setzen, mag Sie jedoch nicht ansprechen, da die Lösung (im Grunde genommen) "tun Sie es nicht" ist. Anstatt auf der Plattform basierende Optionen festzulegen, besteht die Philosophie darin, zu bestimmen, welche Flags basierend auf der Funktionalität benötigt werden, die vom Host oder vom Benutzer zum Zeitpunkt der Konfiguration bereitgestellt wird. Eine praktische autoconf/automake basierte Lösung für das Problem der Zuweisung von Flags basierend auf Plattform besteht darin, für jede Ihrer Plattformen eine eigene Datei zu haben, die CFLAGS zur Konfigurationszeit zuweist und die Datei in der CONFIG _ SITE Umgebungsvariable des Benutzers spezifiziert läuft configure. Sie können CONFIG _ SITE im Anmeldeskript des Benutzers basierend auf der Plattform zuweisen. (d. h., schieben Sie das Problem von configure/make weg und in das Login-Setup). Dies macht die Zuweisung für den Benutzer, der die Software erstellt, transparent. (transparent, aber leicht übersteuerbar).
CFLAGS = $ (CFLAGS _ $ (OS)) auf meinem AIX-System. –
@ Leonardo: ja, korrigiert. – mark4o