Was ist der beste Weg, um ein Verzeichnis, in in einem Makefile installieren zu bewegen?
Frage
Ich bin derzeit mit der üblichen Technik in meinem Makefile einzelne Dateien zu installieren:
install:
install -D executable ${BIN_DIR}
Aber ich lief nur auf eine Situation, wo ich brauche ein ganzes Verzeichnis und alle Dateien unter es in Position zu bewegen.
Ist cp -r
der beste Weg, oder ist es eine Linux-y / Unix-y Weg, dies zu tun?
Lösung
Ja, es ist schwer, von einer Unix-ish Art und Weise zu denken, die cp -r
, obwohl die -r eine relativ späte Zugabe cp
. Ich kann Ihnen die Art und Weise sagen wir verwendet , es zu tun, und das funktioniert ordentlich über Dateisysteme und so:
Lassen Sie src
das Quellverzeichnis, die Sie verschieben möchten, und /path/to/target
ein absoluter Pfad zum Ziel. Dann können Sie:
$ tar cf - src | (cd /path/to/target; tar xf -)
Andere Tipps
Meine Version von install(1)
(Debian) hat:
-d, --directory
treat all arguments as directory names; create all components of the specified directories
-t, --target-directory=DIRECTORY
copy all SOURCE arguments into DIRECTORY
Wenn Sie also install(1)
konsequent in Ihrem Makefile verwenden wollten könnten Sie tun:
install -d destdir
install srcdir/* -t destdir
-t
ist jedoch nicht rekursiv - wenn srcdir
Verzeichnisse enthält, dann werden sie nicht kopiert werden
Die Verknüpfung ist eine andere praktikable Alternative. Das würde ermöglicht es Ihnen, mehrere Verzeichnisse (die verschiedenen Versionen) zugänglich.
zu halten