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

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

install: install -D executable ${BIN_DIR} 

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

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

Solutions Collecting From Web of "在Makefile安装中移动目录的最佳方法是什么?"

是的,很难想象cp -r更加unix-ish的方式,虽然-r是cp一个相对较晚的加法。 我可以告诉你,我们曾经这样做,而且在文件系统等方面干净利落地工作:

src是要移动的源目录, /path/to/target/path/to/target的绝对路径。 那么你可以使用:

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

我的install(1)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包含目录,那么它们不会被复制。

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