如何在 makefile 中添加多行注释

有没有办法像 C 语法 /* */那样在 makefile 中注释掉多行?

88198 次浏览

我想答案是否定的。我能找到的唯一注释样式是 # 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 ("x","y")
# here's all your 'commented' makefile content...
endif

希望能帮上忙。

在 emacs 中,可以标记要注释掉的区域,然后点击 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/^#//来还原它们。

——备注——

  • 要打开 vim 命令行,请按 :(冒号) < br >
  • 要为下一个 n 行准备命令,请使用 .,+n
  • 使用“ v”的示例行类似于: '<,'>s/^/#/