Wenn ich ein benutzerdefiniertes Dienstprogramm verteile, schreibe ich normalerweise ein Makefile, auf /usr/local
dem standardmäßig Binärdateien installiert werden
PREFIX ?= /usr/local
MANPREFIX ?= ${PREFIX}/man
install:
install utility ${PREFIX}/bin/
install utility.1 ${MANPREFIX}/man1/
Der Pfad zu lokalen Binärdateien ist auf verschiedenen Plattformen ziemlich Standard, der Man-Pfad jedoch nicht
- Linux:
/usr/local/share/man
oder/usr/local/man
- Mac OS -
/usr/local/share/man
- BSD:
/usr/local/man
Gibt es eine tragbare Möglichkeit, dieses Makefile zu schreiben? Es erscheint unangemessen zu erwarten, dass Benutzer MANPREFIX vor der Installation auf den richtigen Pfad setzen.
BEARBEITEN:
BSD unterstützt die Zuweisung eines Shell-Befehls mithilfe von !=
, mit dem getestet werden kann, ob ein Pfad vorhanden ist
SHARE != [ -d ${PREFIX}/share/man ] && echo /share || true
MANPREFIX ?= ${PREFIX}${SHARE}/man
Dies ist eine neue Funktion für GNU make , daher ist sie wahrscheinlich noch nicht portabel. Dies funktioniert in GNU make, aber nicht in BSD make:
MANPREFIX ?= $(shell [ -d ${PREFIX}/share/man ] && echo ${PREFIX}/share/man || echo ${PREFIX}/man)