代码之家  ›  专栏  ›  技术社区  ›  Chris Tonkinson

删除依赖项文件

  •  10
  • Chris Tonkinson  · 技术社区  · 14 年前

    我不确定是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)
    

    当我跑的时候 make ,在所有二进制文件都链接(正确)之后,我在makeexit之前看到下面额外的(未解释的)行

    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
    

    那是从哪里来的 rm 命令来了?在任何地方我都能找到 我的makefile中的命令位于clean指令中

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

    2 回复  |  直到 14 年前
        1
  •  13
  •   Michael Mrozek    14 年前

    make将自动创建 intermediate files 如果需要将两个规则链接在一起,但它将在生成结束时删除它们。你可以用 .PRECIOUS 特别的目标,以防止它删除它们

        2
  •  1
  •   Paul Rubel    14 年前

    make -n {TARGET}
    

    它将向您显示它将运行但实际上不会运行的命令。这可以让您看到触发了哪些规则,但并没有提供所有额外的输出,因此很难诊断问题。