Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在makefiles中添加多行注释_Makefile - Fatal编程技术网

如何在makefiles中添加多行注释

如何在makefiles中添加多行注释,makefile,Makefile,是否有一种方法可以注释掉makefiles中的多行,如C语法/***/?我相信答案是否定的。我能找到的唯一注释样式是#每行,或使用\来包装第一行。不,makefiles中没有类似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

是否有一种方法可以注释掉makefiles中的多行,如C语法
/***/

我相信答案是否定的。我能找到的唯一注释样式是#每行,或使用\来包装第一行。

不,makefiles中没有类似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
ifeq ("x","y")
# here's all your 'commented' makefile content...
endif
然而,我认为您可能出于调试的原因,希望暂时注释掉makefile的一部分,并且在每一行上添加反斜杠并不实际。如果您使用的是GNU make,我建议您使用带有故意错误表达式的
ifeq
指令。例如:

# 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
ifeq ("x","y")
# here's all your 'commented' makefile content...
endif

希望能有所帮助。

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

关于使用
ifeq
在make(1)中进行多行注释的注意事项。如果您编写以下内容,则它们的工作效果不太好:

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

ifeq和endif之间的文本仍将由make解析,这意味着您无法在该部分中写入任何您想要的内容。如果你想写一条长评论,在评论中写任何你想写的东西(包括$signs、冒号等等,它们都有make的意思),那么你必须评论每一行。那么为什么
ifeq
…)

不完全是你想要的,而是精神上的相似。我不希望这是一个被接受的答案,但也许它可以帮助别人

假设您正在VIM中编辑makefiles:
决定要注释的行或用“v”选择它们

然后可以使用regex
s/^/#/
注释掉这些行
s/^#/
来还原它们

--注释--

  • 要打开vim命令行,请按
    (冒号)
  • 要准备下一个“n”行的命令,请使用
    ,+n

  • 使用“v”的示例行如下所示:
    “您使用的make版本是什么?这不正确。”。gmake对ifeq中的文本进行的唯一“解析”是查找endif。您可以使用在ifeq中有一些虚假语法的makefile轻松地验证这一点。只要ifeq中的条件计算为false,gmake就会很高兴地忽略ifeq中的语法错误。这是不正确的。尝试以下示例:ifeq(0,1)不要冒ifeq注释的风险,否则如果行开头的else将make抛出错误,则麻烦会发现您已结束。否则,ifeq、ifneq和其他我不知道的符号可能会给你带来问题。这是一个公平的观点,但大多数语法错误将被忽略。请注意,如果你想在规则中“注释掉”行,请不要缩进ifeq、endif行。遵循与
    ifeq
    相同的注意事项,但对我有效。谢谢更容易使用块模式。转到要注释的第一行的开头,ctrl-v,向下箭头,直到结尾,大写字母I,#,escape。要删除注释,请按ctrl-v键,一直向下箭头,然后按x键