【问题标题】:Reset Make's dependency dates重置 Make 的依赖日期
【发布时间】:2014-11-30 20:04:52
【问题描述】:

我将计算机的日期设置为未来 1 年,更改为 main.c,并使用 make 重新编译我的项目。

我将计算机的日期设置回实际日期,但make 现在认为该文件的最后一次修改是在未来 1 年。

我无法再更改 main.c 并让 make 识别它,除非我将日期设置为未来。

有没有办法重置make 的依赖日期?

【问题讨论】:

  • Make 使用文件修改日期。您可以使用文件管理器或触摸命令更改它们 (touch -t 20141130 your_file)
  • 要将main.c的修改时间重置为现在+(一年),还是main的修改时间重置为现在-(一分钟)?

标签: date makefile gnu gnu-make


【解决方案1】:

来自备份。除此之外,您可以将所有文件的日期设置为相同的时间戳,例如现在是时候了。

在类 Unix 系统(如 Linux 或 Cygwin)上,此命令将为您执行此操作(在您将 cded 置于构建树的顶部之后):

find . -type f | xargs -d '\n' touch

如果您想 100% 所有文件都具有相同的时间戳,请这样做

now=`%Y-%m-%d %H:%M:%s`; find . -type f | xargs -d '\n' touch --date="$now"

【讨论】:

  • 我不确定我对自己的解释是否足够好。因为我保存在现在,所以我已经将文件的时间戳更改为现在。问题是make然后决定我修改的文件没有被修改,因为时间倒退了。
  • 倒退后再做。
  • 您的回答只是解释了如何更改文件的时间戳。我对此不感兴趣。我想重置 Make 用来确定文件是否已被修改的内部日期。
  • @Jimmay 没有“Makes 使用的内部日期”之类的东西。对您的问题的第一条评论(frp)说了这么多:“使用文件修改日期”。没有什么了。 Make 使用先决条件的最后修改时间和目标的最后修改时间并比较它们。没有“内部日期”。
猜你喜欢
  • 1970-01-01
  • 2015-05-09
  • 1970-01-01
  • 2011-01-13
  • 2010-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-20
相关资源
最近更新 更多