继续翻译

`.SECONDARY'
     The targets which `.SECONDARY' depends on are treated as
     intermediate files, except that they are never automatically
     deleted.  *Note Chains of Implicit Rules: Chained Rules.

     `.SECONDARY' with no prerequisites causes all targets to be treated
     as secondary (i.e., no target is removed because it is considered
     intermediate).

`.SECONDEXPANSION'
     If `.SECONDEXPANSION' is mentioned as a target anywhere in the
     makefile, then all prerequisite lists defined _after_ it appears
     will be expanded a second time after all makefiles have been read
     in.  *Note Secondary Expansion: Secondary Expansion.

`.DELETE_ON_ERROR'
     If `.DELETE_ON_ERROR' is mentioned as a target anywhere in the
     makefile, then `make' will delete the target of a rule if it has
     changed and its recipe exits with a nonzero exit status, just as it
     does when it receives a signal.  *Note Errors in Recipes: Errors.

`.IGNORE'
     If you specify prerequisites for `.IGNORE', then `make' will
     ignore errors in execution of the recipe for those particular
     files.  The recipe for `.IGNORE' (if any) is ignored.

     If mentioned as a target with no prerequisites, `.IGNORE' says to
     ignore errors in execution of recipes for all files.  This usage of
     `.IGNORE' is supported only for historical compatibility.  Since
     this affects every recipe in the makefile, it is not very useful;
     we recommend you use the more selective ways to ignore errors in
     specific recipes.  *Note Errors in Recipes: Errors.

.SECONDARY 依赖的目的被认为是中间文件。除了那些永远不会自动删除的。

*Note Chains of Implicit Rules: Chained Rules.

没有前提条件的.SECONDARY 导致所有的目的都被当成 从属的(没有目的会被删除,因为它被认为是中间文件)。

*此处我插一句,这里的说明是非常错误的。我认为正确的说法应当是:中间文件一般会被删除,但是标记为 .SECONDARY 的中间文件不会被删除*

.SECONDEXPANSION

如果 .SECONDEXPANSION 作为一个目的被声明在makefile 的某处,那么所有的在此之后的定义的前提条件将在所有 makefile 被读取后,扩展两次。

*Note Secondary Expansion: Secondary Expansion

如果 DELETE_ON_ERRORS 作为一个目的在makefile中的任何一个地方被提及,make 将要删除一个规则的目的,如果它在规则中变化了并且此规则的片段返回一个非零值,就和它接收到了一个信号时的行为一样。 *Note Errors in Recipes: Errors.

`.IGNORE'
如果你为 .IGNORE 指定前提条件,那么 make 将要在执行片段的过程中忽略错误。.IGNORE 的片段被忽略。

If mentioned as a target with no prerequisites, `.IGNORE' says to
ignore errors in execution of recipes for all files. This usage of
`.IGNORE' is supported only for historical compatibility. Since
this affects every recipe in the makefile, it is not very useful;
we recommend you use the more selective ways to ignore errors in
specific recipes. *Note Errors in Recipes: Errors.

当 .IGNORE 中没有前提条件的时候,表示为所有文件,忽略片段执行中的错误。这种用法知识为了支持对旧有版本的兼容性而设。由于这影响到makefile中的所有片段,它不是很有用;我们建议你采用更加有选择性的方式来忽略特定片段中的错误。 *Note Errors in Recipes: Errors.

后文待续