在Makefile安装中将目录移动到位的最佳方法是什么?
题
我目前正在使用Makefile中的常用技术来安装单个文件:
install:
install -D executable ${BIN_DIR}
但是我遇到了一个需要移动整个目录及其下的所有文件的情况。
cp -r
是最好的方法,还是有更多的linux-y / unix-y方法呢?
解决方案
是的,很难想到 cp -r
的更多unix-ish方式,尽管-r是 cp
的相对较晚的添加。我可以告诉你我们使用这样做的方式,它可以在文件系统中整齐地工作,并且可以:
让 src
成为您要移动的源目录, / path / to / target
是目标的绝对路径。然后你可以使用:
$ tar cf - src | (cd /path/to/target; tar xf -)
其他提示
我的 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
包含目录,那么它们将不会被复制。
链接是另一种可行的替代方案。这将允许您访问多个目录(代表不同的版本)。
不隶属于 StackOverflow