2013-10-06 25 views
1

两次在过去,GNU使已经毁了我的工作,因为它的一些内置的规则有.c文件作为目标。GNU品牌:禁用所有内置的规则,除了那些期望

如果您有一个名为foo.c的文件,并且还有一个foo.l Lex扫描仪或foo.y Yacc解析器,请小心! GNU化妆假定.c文件从这些做了一个目标(这显然是一个POSIX的要求!),它将会做这样的事情mv y.tab.c foo.clex -t foo.l > foo.c

什么是禁用所有这些隐藏的,危险的规则(无论是已知或未知的),同时保持有用的方式?

具体而言,我们怎么可以给这个请求GNU品牌:“请保留所有相关的(例如).c和.o文件的规则,并禁止其参与任何其他文件类型的所有规则”?

回答

1

the manual

许多预定义的隐规则在化妆实现 后缀规则,那么哪些将被定义取决于后缀列表上... 如果修改后缀列表中, 影响中唯一预定义的后缀规则将由您指定的列表中的 上的一个或两个后缀命名;规则,其后缀不能成为名单上 禁用... 如果你想消除默认后缀知道,而不是仅仅 加入他们,写有任何先决条件.SUFFIXES规则。由 特殊发行,这消除了 .SUFFIXES的所有现有先决条件。然后,您可以编写另一个规则来添加您想要的后缀。

.SUFFIXES:   # Delete the default suffixes 
.SUFFIXES: .c .o  # Define a new suffix list 
+0

啊,我明白了。我已经在尝试'SUFFIXES',但我只有第二行'.SUFFIXES:.c .o',它增加了设置而不是替换它。谢谢。 – Kaz

+0

另外,你可以用'-Rr'调用_make_(你只需要其中的一个,但我通常会忘记它) – bobbogo

相关问题