在 Makefile 安装中将目录移动到位的最佳方法是什么?
我目前正在 Makefile 中使用常用技术来安装单个文件:
install:
install -D executable ${BIN_DIR}
但我刚刚遇到了一种情况,我需要将整个目录及其下面的所有文件移动到位。
cp -r 是最好的方法还是有更多的 linux-y/unix-y 方法来做到这一点?
I'm currently using the usual technique in my Makefile to install individual files:
install:
install -D executable ${BIN_DIR}
But I just ran across a situation where I need to move a whole directory and all files underneath it into place.
Is cp -r
the best way or is there a more linux-y/unix-y way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
是的,很难想出比 cp -r 更 Unix 风格的方式,尽管 -r 是 cp 相对较晚的补充。 我可以告诉您我们使用的方式来做到这一点,并且这种方式可以在文件系统中完美地工作,例如:
让
src
成为您想要移动的源目录,并且/path/to/target
是目标的绝对路径。 然后你可以使用:Yeah, it's hard to think of a more unix-ish way that
cp -r
, although the -r is a relatively late addition tocp
. I can tell you the way we used to do it, and that works neatly across filesystems and such:Let
src
be the source directory you want to move, and/path/to/target
be an absolute path to the target. Then you can use:我的
install(1)
版本 (Debian) 具有:因此,如果您想在整个 Makefile 中一致地使用
install(1)
,您可以执行以下操作:-t<然而 /code> 不是递归的 - 如果 srcdir 包含目录,那么它们将不会被复制。
My version of
install(1)
(Debian) has:So if you wanted to use
install(1)
consistently throughout your Makefile you could do:-t
isn't recursive however - ifsrcdir
contains directories, then they won't get copied.链接是另一种可行的选择。 这将允许您保持多个目录(代表不同版本)可访问。
Linking is another viable alternative. That would allow you to keep multiple directories (representing different versions) accessible.