在Makefile安装中将目录移动到位的最佳方法是什么?

Lol*_*ath 12 linux install makefile

我目前正在使用Makefile中的常用技术来安装单个文件:

install:
    install -D executable ${BIN_DIR}
Run Code Online (Sandbox Code Playgroud)

但是我遇到了一个情况,我需要将整个目录及其下的所有文件移动到位.

cp -r最好的方式还是有更多的linux-y/unix-y方式来做到这一点?

Cha*_*tin 7

是的,很难想到一种更加unix-ish的方式cp -r,尽管-r是一个相对较晚的补充cp.我可以告诉你,我们的方式做它,跨文件系统和这样的作品整齐地:

src你想要移动的源目录,/path/to/target是目标的绝对路径.然后你可以使用:

$ tar cf - src | (cd /path/to/target; tar xf -)
Run Code Online (Sandbox Code Playgroud)

  • 发现老派的做法,在 tar(1) 标志前面加上破折号:) 我仍然经常使用这种方法。但是你*肯定*想要在你的子shell中使用&&(而不是;)。如果 /path/to/target 不存在,您可能会得到一些...有趣的...结果。 (2认同)
  • 很棒,它可能早于*你*.我很确定我在1983年学到了它,这是一个长期的"看看你能用管道做什么"的例子. (2认同)