Quel est le meilleur moyen de déplacer un répertoire en place dans une installation de Makefile?

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

  •  03-07-2019
  •  | 
  •  

Question

J'utilise actuellement la technique habituelle dans mon Makefile pour installer des fichiers individuels:

install:
    install -D executable ${BIN_DIR}

Mais je viens de rencontrer une situation dans laquelle je dois déplacer tout un répertoire et tous les fichiers qu'il contient.

Est-ce que cp -r est le meilleur moyen ou existe-t-il un moyen plus linux-y / unix-y de le faire?

Était-ce utile?

La solution

Oui, il est difficile de penser à une manière plus unix-ish que cp -r , bien que le -r soit un ajout relativement tardif à cp . Je peux vous dire comment nous avons utilisé pour le faire, et cela fonctionne parfaitement sur tous les systèmes de fichiers et autres:

Soit src le répertoire source à déplacer, et / chemin / vers / cible un chemin absolu vers la cible. Ensuite, vous pouvez utiliser:

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

Autres conseils

Ma version de install (1) (Debian) a:

   -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

Donc si vous voulez utiliser install (1) de manière cohérente tout au long de votre Makefile, vous pouvez le faire:

install -d destdir
install srcdir/* -t destdir

-t n'est cependant pas récursif. Si srcdir contient des répertoires, ils ne seront pas copiés.

La liaison est une autre alternative viable. Cela vous permettrait de garder plusieurs répertoires (représentant différentes versions) accessibles.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top