GNU make manual 翻译( 一百零八)
继续翻译
`.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.
后文待续