【发布时间】:2010-03-16 10:51:55
【问题描述】:
我正在玩弄制作文件和 VPATH 变量。基本上,我从几个不同的地方(由 VPATH 指定)获取源文件,然后使用我想要的 .o 文件列表将它们编译到当前目录中。
到目前为止一切顺利,现在我将依赖信息生成到一个名为“.depend”的文件中,并将其包括在内。如果包含文件不存在,Gnmake 将尝试使用到目前为止定义的规则来创建包含的文件,所以没关系。基本上,我的 makefile 是这样的。
VPATH=A/source:B/source:C/source
objects=first.o second.o third.o
executable: $(objects)
.depend: $(objects:.o=.c)
$(CC) -MM $^ > $@
include .depend
现在对于真正的问题,我可以以任何方式抑制 .depend 文件的生成吗?我目前正在一个 clearcase 环境中工作 -> sloooow,所以我希望在更新依赖信息时能更好地控制它。
这或多或少是一个学术练习,因为我可以在执行 make 之前将它包装在一个触及 .depend 文件的脚本中(从而使其比任何源文件都更新),但很有趣的是知道是否我可以使用“纯”制作以某种方式抑制它。
我无法删除对源文件的依赖(即仅使用 .depend:),因为我依赖 $^ 变量为我做 VPATH 解析。
如果有任何方法只能根据更新的#include 指令来更新依赖项,那当然会更好.. 但我不会为此屏住呼吸.. :)
【问题讨论】:
-
为什么将
.depend: ...目标包装到if指令中不起作用? -
@Pavel:有趣,我从没想过。