如何在makefile文件中添加多行注释


Answers:


152

不,/* */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

但是,我想您可能出于调试原因而希望暂时注释掉makefile的一部分,并且在每行上添加反斜杠并不是很实际。如果您使用的是GNU make,建议您将ifeq指令与故意为假的表达式一起使用。例如:

ifeq ("x","y")
# here's all your 'commented' makefile content...
endif

希望有帮助。


3
请注意,如果要在规则中“注释掉”行,请不要缩进ifeq,endif行。
西蒙·马顿(SimonMárton),2015年

13

我相信答案是否定的。我可以找到的唯一注释样式是每行#,或使用\换行。


10

关于ifeq在make(1)中使用多行注释的想法的注释。由于您编写以下内容,因此它们不能很好地工作:

ifeq (0,1)
    do not risk ifeq comments
    else trouble will find you
    ifeq is even worse
endif

make仍然会解析ifeq和endif之间的文本,这意味着您无法在该部分中编写任何内容。而且,如果您想写一个很长的注释,并在注释中写任何内容(包括$符号,冒号等等,这些都具有使make的含义),那么您必须注释每一行。那么为什么ifeq... :)


那是不对的。ifeq内的文本唯一“解析” gmake的方法是寻找一个endif。您可以使用在ifeq中具有伪造语法的makefile轻松验证这一点。只要ifeq中的条件评估为false,gmake就会愉快地忽略ifeq内部的语法错误。
埃里克·梅尔斯基

3
那是不对的。请尝试以下示例:ifeq(0,1)不要冒ifeq注释的风险,否则麻烦将发现您endif该行开始处的else将导致错误。因此,否则ifeqifneq以及我可能不知道的许多其他符号都会给您带来麻烦。
Mark Veltzer 2015年

这是一个公平的观点,但是大多数语法错误将被忽略。
埃里克·梅尔斯基


3

不完全是您要寻找的东西,而是精神上相似。我不希望它成为公认的答案,但也许它可以帮助某人。

假设您要在VIM中编辑makefile:
确定要注释的行或使用'v'选择它们。

然后,您可以使用正则表达式s/^/#/注释掉这些行
s/^#//还原它们。

- 笔记 -

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

2
而是更容易使用块模式。转到第一行的开始处以ctrl-v进行注释,向下箭头直至结尾,大写I,#,转义。删除评论:ctrl-v,一直向下箭头,x
brunch875

1

在emacs中,您可以标记要注释掉的区域并点击M-;(运行comment-dwim)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.