gcc - make 删除依赖文件

标签 gcc makefile dependencies 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)

当我跑 make ,在所有二进制文件链接(正确)之后,我在 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
rm从哪里来命令来了?唯一的地方 - 任何地方 - 我有一个 rm我的 makefile 中的命令在 clean 指令中
test-clean:
  rm -f $(TEST_BIN_FILES)
  rm -f $(TEST_OBJ_DIR)/*.{a,d,o}

有任何想法吗?

最佳答案

make 会自动创建 intermediate files如果有必要将两个规则链接在一起,但它会在构建结束时删除它们。您可以使用 .PRECIOUS特殊目标,以防止它删除它们

关于gcc - make 删除依赖文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3326244/

相关文章:

makefile - 如何向这个 Makefile 添加一个 all 规则?

shell - 如何在 Makefile 中定义全局 shell 函数?

linux - 在 CMake 中有条件地查找共享库的依赖项

windows - 如何诊断、调试 MinGW-get GUI (guimain.exe) 崩溃?

c - 程序会编译但不会执行

gcc - C/C++编译器(例如GCC)是否通常以2的幂次幂来优化模数?

eclipse - 如何在 Mac OS X Lion 中安装 gcc

c - 使 : *** No targerts specified and no makefile found. 停止

windows-mobile - 防止更改智能设备设置 CAB 上的依赖关系

javascript - Rollup.js Unresolved 依赖项