16

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

install:
    install -D executable ${BIN_DIR}

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

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

4

3 回答 3

7

是的cp -r,虽然 -r 是相对较晚的cp. 我可以告诉你我们过去的做法,并且可以在文件系统等方面巧妙地工作:

src成为您要移动的源目录,并/path/to/target成为目标的绝对路径。然后你可以使用:

$ tar cf - src | (cd /path/to/target; tar xf -)
于 2009-01-06T17:00:25.217 回答
5

我的install(1)(Debian)版本有:

   -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

因此,如果您想在install(1)整个 Makefile 中始终如一地使用,您可以这样做:

install -d destdir
install srcdir/* -t destdir

-t但是不是递归的 - 如果srcdir包含目录,那么它们将不会被复制。

于 2009-01-06T17:01:35.853 回答
0

链接是另一种可行的选择。这将允许您保持多个目录(代表不同版本)可访问。

于 2009-01-06T17:56:24.777 回答