¿Cuál es la mejor manera de mover un directorio a su lugar en una instalación de Makefile?

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

  •  03-07-2019
  •  | 
  •  

Pregunta

Actualmente estoy usando la técnica habitual en mi Makefile para instalar archivos individuales:

install:
    install -D executable ${BIN_DIR}

Pero acabo de encontrar una situación en la que necesito mover un directorio completo y todos los archivos debajo de él en su lugar.

¿Es cp -r la mejor manera o hay una manera más linux-y / unix-y de hacer esto?

¿Fue útil?

Solución

Sí, es difícil pensar en una forma más unix que cp -r , aunque -r es una adición relativamente tardía a cp . Puedo decirle la forma en que usamos para hacerlo, y eso funciona perfectamente en todos los sistemas de archivos y tal:

Deje que src sea el directorio de origen que desea mover, y / path / to / target sea una ruta absoluta al objetivo. Entonces puedes usar:

$ tar cf - src | (cd /path/to/target; tar xf -)

Otros consejos

Mi versión de install (1) (Debian) tiene:

   -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

Entonces, si desea utilizar install (1) de manera consistente en todo su Makefile, puede hacer:

install -d destdir
install srcdir/* -t destdir
Sin embargo,

-t no es recursivo; si srcdir contiene directorios, no se copiarán.

La vinculación es otra alternativa viable. Eso le permitiría mantener múltiples directorios (que representan diferentes versiones) accesibles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top