makefile中间规则特定

时间:2013-02-28 11:28:25

标签: makefile

makefile通过中间文件从另一个文件生成文件,并自动删除中间文件:

.INTERMEDIATE $(B_FILES)

%.b : %.a
    a_to_b $<

%.c : %.b
    b_to_c $<

all: $(A_FILES)

以上是一个简化示例 - 它生成.c文件并删除中间.b文件。如果具体制作,可以生成并保留中间.b文件:

$ make my_file.b

但是,通过添加规则来生成中间文件:

b_files: $(B_FILES)

可以制作所有中间文件:

$ make b_files

但是make会在创建后删除.b文件,因为它们被列为中间文件。是否可以在使用此特定目标时阻止make删除它们?

我认为答案需要在b_files规则中重新定义.INTERMEDIATE,但我不确定是否可以在特定规则中重新定义目标。

1 个答案:

答案 0 :(得分:0)

尝试使用 .PRECIOUS .SECONDARY ,而不是here所述。如果您需要有条件地执行此操作,可以使用 MAKECMDGOALS 来检查特殊目标:

ifeq ($(MAKECMDGOALS),b_files)
  .SECONDARY: $(B_FILES)
endif
相关问题