makefile中间规则特定

makefile中间规则特定,makefile,Makefile,makefile通过中间文件从另一个生成文件,并自动删除中间文件: .INTERMEDIATE $(B_FILES) %.b : %.a a_to_b $< %.c : %.b b_to_c $< all: $(A_FILES) 但是,通过添加规则来生成中间文件: b_files: $(B_FILES) $ make b_files 可以生成所有中间文件: b_files: $(B_FILES) $ make b_files 但是,make会在生成.b

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

.INTERMEDIATE $(B_FILES)

%.b : %.a
    a_to_b $<

%.c : %.b
    b_to_c $<

all: $(A_FILES)
但是,通过添加规则来生成中间文件:

b_files: $(B_FILES)
$ make b_files
可以生成所有中间文件:

b_files: $(B_FILES)
$ make b_files
但是,make会在生成.b文件后删除这些文件,因为它们被列为中间文件。使用此特定目标时,是否可以防止make删除它们


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

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

ifeq ($(MAKECMDGOALS),b_files)
  .SECONDARY: $(B_FILES)
endif

你的问题有点不清楚;你用的是什么版本的Make?我用的是GNU Make 3.82。还有什么我可以澄清的吗?我想我现在明白了,但我不认为没有可怕的混乱就可以做到这一点。@Beta你认为这是解决方案吗(问是因为你有点擅长制作文件)?