GNU make manual 翻译( 一百零九)

继续翻译

`.LOW_RESOLUTION_TIME'
     If you specify prerequisites for `.LOW_RESOLUTION_TIME', `make' assumes that these files are created by commands that generate low resolution time stamps.  The recipe for the `.LOW_RESOLUTION_TIME' target are ignored.

     The high resolution file time stamps of many modern file systems lessen the chance of `make' incorrectly concluding that a file is up to date.  Unfortunately, some hosts do not provide a way to set a high resolution file time stamp, so commands like `cp -p' that explicitly set a file's time stamp must discard its subsecond part.
     If a file is created by such a command, you should list it as a prerequisite of `.LOW_RESOLUTION_TIME' so that `make' does not mistakenly conclude that the file is out of date.  For example:

          .LOW_RESOLUTION_TIME: dst
          dst: src
                  cp -p src dst

     Since `cp -p' discards the subsecond part of `src''s time stamp, `dst' is typically slightly older than `src' even when it is up to date.  The `.LOW_RESOLUTION_TIME' line causes `make' to consider `dst' to be up to date if its time stamp is at the start of the same second that `src''s time stamp is in.

     Due to a limitation of the archive format, archive member time stamps are always low resolution.  You need not list archive members as prerequisites of `.LOW_RESOLUTION_TIME', as `make' does  this automatically.

如果你为 .LOW_RESOLUTION_TIME 指定前提条件,make 认定这些文件被 生成 低清晰度时间戳的命令来省城。.LOW_RESOLUTION_TIME 目的的片段被忽略。

现代文件系统的高清晰度文件时间戳会减少 make 错误地认为一个文件已经陈旧的问题。但是不幸的是,某些系统没有提供一种方式来设定高清晰度文件时间戳,因此某些命令比如 cp -p 这样的,显式设定文件时间戳,却必须把跌入个部分切掉了。如果一个文件由这样的命令创建,你应当把它列为 .LOW_RESOLUTION_TIME 的前提条件,这样 make 就不会错误地得出结论认为此文件陈旧了。例如:

.LOW_RESOLUTION_TIME: dst
dst: src
cp -p src dst

由于 cp -p 切掉了 src 文件时间戳的第二部分,所以 dst 会比src 旧一些,.LOW_RESOLUTION_TIME 行使得 make 认为 ,当 dst 的时间戳和src 一样的时候,dst 是比较新的。

由于 库文件格式的限制,库文件成员的时间戳总是低解析度的。你不需要把库文件成员列为.LOW_RESOLUTION_TIME的前提条件,因为 make 会自动这么做。

后文待续

posted @ 2012-09-25 09:42  健哥的数据花园  阅读(300)  评论(0编辑  收藏  举报