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

时间:2009-01-06 16:35:51

标签: linux makefile install

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

install:
    install -D executable ${BIN_DIR}

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

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

3 个答案:

答案 0 :(得分:6)

是的,虽然-r是cp -r的相对较晚的添加,但很难想到cp的更多unix-ish方式。我可以告诉你我们使用这样做的方式,它可以在文件系统中整齐地工作,并且可以:

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

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

答案 1 :(得分:3)

我的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

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

install -d destdir
install srcdir/* -t destdir

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

答案 2 :(得分:0)

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