Was ist der beste Weg, um ein Verzeichnis, in in einem Makefile installieren zu bewegen?

StackOverflow https://stackoverflow.com/questions/417236

  •  03-07-2019
  •  | 
  •  

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?

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top