有没有办法像 C 语法 /* */那样在 makefile 中注释掉多行?
/* */
我想答案是否定的。我能找到的唯一注释样式是 # for each line,或者用来包装第一行。
不,makefile 中没有任何类似于 C 风格的 /* */注释。正如其他人建议的那样,您可以通过使用行延续生成多行注释。例如:
# This is the first line of a comment \ and this is still part of the comment \ as is this, since I keep ending each line \ with a backslash character
但是,我猜想您可能出于调试的原因,希望临时注释掉生成文件的一块,并且在每一行上添加一个反斜杠是不太实际的。如果您正在使用 GNUmake,我建议您使用带有故意错误表达式的 ifeq指令。例如:
ifeq
ifeq ("x","y") # here's all your 'commented' makefile content... endif
希望能帮上忙。
在 emacs 中,可以标记要注释掉的区域,然后点击 M-;(运行 comment-dwim)。
M-;
comment-dwim
关于在 make (1)中使用 ifeq执行多行注释的想法的注释。如果你写下面的内容,它们就不能很好地工作了:
ifeq (0,1) do not risk ifeq comments else trouble will find you ifeq is even worse endif
Ifeq 和 endf 之间的文本仍然会被 make 解析,这意味着您不能在该部分中编写任何您想要的内容。如果你想写一个很长的评论,并在评论中写任何你想写的东西(包括 $sign,冒号等等,这些都有 make 的意思) ,那么你必须在每一行写评论。那么为什么 ifeq... :)
define BOGUS lines ..... endef
虽然不是你想要的,但精神上很相似。我不指望这是可以接受的答案,但也许它可以帮助某人。
假设你在 VIM 中编辑你的 makefile: 要么决定要注释哪些行,要么用“ v”选择它们。
然后您可以使用正则表达式 s/^/#/来注释掉这些行 和 s/^#//来还原它们。
s/^/#/
s/^#//
——备注——
:
.,+n
'<,'>s/^/#/