过去两次,GNU make 破坏了我的工作,因为它的一些内置规则将.c
文件作为目标。
如果您有一个名为 的文件foo.c
,还有一个foo.l
Lex 扫描器或foo.y
Yacc 解析器,请小心!GNU make 假定该.c
文件是由这些文件制成的目标(这显然是 POSIX 要求!),它将执行类似mv y.tab.c foo.c
or的操作lex -t foo.l > foo.c
。
在保留有用规则的同时禁用所有这些隐藏的、危险的规则(无论是已知的还是未知的)的方法是什么?
具体来说,我们如何向 GNU Make 提出这个请求:“请保留与(例如).c 和 .o 文件相关的所有规则,并禁用所有涉及任何其他文件类型的规则”?