【问题标题】:How to tar a directory with using makefile如何使用 makefile 对目录进行 tar
【发布时间】:2019-05-22 08:14:03
【问题描述】:

我在子目录中的文件很少,所有文件都只是文本文件,如常见问题、用户指南。没有 c/cpp src 代码 在里面。以下是文件和目录结构。

scr
|_Makefile                     #Top level Makefile
|_other_dirs
|_some_other_dirs
|_mydir
   |_Makefile                  #Makefile of mydir, need to put some code here
   |_dir1
   |  |_textfile0
   |  |_textfile1 
   |_dir2
      |_textfile2
      |_textfile3

问题,如何将 dir1 和 dir2 的内容 tar 到一个 tar 球中?我尝试在互联网上搜索有关 Makefile 以及如何使用它从顶级 Makefile 创建接球,但还没有成功。我对 Makefile 不是很熟悉,任何起点都将不胜感激。谢谢。

以下是我的新手尝试拥有一个非常基本的 Makefile:

 -->cat Makefile
mydir.tgz : *
    tar -zcvf mydir.tgz mydir/

 -->make
Makefile:1: *** missing separator.  Stop.

想法是运行顶级 Makefile 并为 mydir 生成 tar 文件。

【问题讨论】:

标签: bash makefile


【解决方案1】:

您可以递归添加mydir 中的所有文件和目录,作为mydir.tgz 的先决条件。这样,当且仅当mydir 下的某处发生更改时,才会执行您的 tar 文件。比如这样:

mydir.tgz: $(shell find mydir)
    tar -zcvf mydir.tgz mydir

带有tar 命令的行应该以TAB 开头。

this SO question 中也描述了此答案的大部分机制,但我觉得将其添加到此处以简明扼要地回答您的具体问题似乎很有意义。

【讨论】:

  • 处理删除的文件,需要包含目录的时间戳。
  • @o11c 我已经改变了我的答案。我认为现在更好更简单了,多亏了你:-)
  • 是否可以使用 make 的 ar 语法来做同样的事情,你知道语法是 archive(member) 与 ar 兼容,但与 tar 兼容吗?
  • @Sandburg 开箱即用,似乎并非如此。但是,gmake 手册部分 11.4 Suffix Rules for Archive Files 看起来像是一个很有前途的机制,可以支持使用 tar 而不是 ar 来使用归档语法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-27
相关资源
最近更新 更多