Qual é a melhor maneira de mover um diretório no lugar em um Makefile instalar?

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

  •  03-07-2019
  •  | 
  •  

Pergunta

Atualmente estou usando a técnica habitual no meu Makefile para instalar arquivos individuais:

install:
    install -D executable ${BIN_DIR}

Mas eu só encontrei uma situação onde eu preciso para mover um diretório inteiro e todos os arquivos abaixo dele no lugar.

É cp -r a melhor maneira ou há uma mais linux-y way / unix-y para fazer isso?

Foi útil?

Solução

Sim, é difícil pensar em uma maneira mais unix-ish que cp -r, embora o -r é uma adição relativamente tarde para cp. Posso dizer-lhe a maneira que nós usado para fazê-lo, e que funciona perfeitamente entre sistemas de arquivos e tal:

Let src ser o diretório de origem que você deseja mover, e /path/to/target ser um caminho absoluto para o destino. Então você pode usar:

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

Outras dicas

A minha versão do install(1) (Debian) tem:

   -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

Então, se você quisesse usar install(1) de forma consistente em toda a sua Makefile você poderia fazer:

install -d destdir
install srcdir/* -t destdir

-t não é recursiva no entanto -. Se srcdir contém diretórios, então eles não são copiados

A vinculação é outra alternativa viável. Isso iria permitir que você mantenha vários diretórios (representando diferentes versões) acessível.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top