删除依赖文件

Chr*_*son 11 dependencies gcc makefile gnu-make

我不确定这是我在这里不明白的gmake还是gcc.

我正在使用-MM和-MD选项为我正在使用的单元测试框架生成依赖性规则.特别:

$(TEST_OBJ_DIR)/%.d: $(TEST_SRC_DIR)/%.cpp
  @$(CPPC) -MM -MD $< -o $@
  @sed -i -e 's|\(.*\)\.o:|$(OBJ_DIR)/\1.o $(TEST_OBJ_DIR)/\1.d $(TEST_OBJ_DIR)/\1.o:|' $@

-include $(TEST_DEP_FILES)
Run Code Online (Sandbox Code Playgroud)

当我运行时make,在所有二进制文件链接(正确)后,我会在退出之前看到以下额外的(无法解释的)行

rm test/obj/dice.d test/obj/regex.o test/obj/inventoryContainer.d test/obj/color-string.d test/obj/dice.o test/obj/inventoryContainer.o test/obj/color-string.o test/obj/regex.d
Run Code Online (Sandbox Code Playgroud)

那个rm命令从哪里来?唯一的地方 - 任何地方 - 我rm在makefile中有一个命令是在clean指令中

test-clean:
  rm -f $(TEST_BIN_FILES)
  rm -f $(TEST_OBJ_DIR)/*.{a,d,o}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Mic*_*zek 11

如果需要,make会自动创建中间文件以将两个规则链接在一起,但它会在构建结束时删除它们.您可以使用.PRECIOUS特殊目标来阻止它们删除它们