【发布时间】:2011-05-28 10:56:32
【问题描述】:
有没有办法像 C 语法 /* */ 那样注释掉 makefile 中的多行?
【问题讨论】:
-
你用的是什么版本的make?
标签: makefile
有没有办法像 C 语法 /* */ 那样注释掉 makefile 中的多行?
【问题讨论】:
标签: makefile
我相信答案是否定的。我能找到的唯一注释样式是 # 用于每一行,或者使用 \ 来换行第一行。
【讨论】:
不,makefile 中没有类似 C 风格的 /* */ cmets。正如其他人所建议的那样,您可以使用续行来进行多行注释。例如:
# 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
希望对您有所帮助。
【讨论】:
在 emacs 中,您可以标记要注释掉的区域并点击 M-;(运行 comment-dwim)。
【讨论】:
关于在 make(1) 中使用 ifeq 执行多行 cmets 的想法的注释。它们不能很好地工作,因为如果您编写以下内容:
ifeq (0,1)
do not risk ifeq comments
else trouble will find you
ifeq is even worse
endif
ifeq 和 endif 之间的文本仍将由 make 解析,这意味着您无法在该部分中编写任何您想要的内容。如果你想写一个很长的注释并在注释中写下你想要的任何东西(包括 $ 符号、冒号等等,它们都对 make 有意义),那么你必须对每一行进行注释。那么为什么ifeq...:)
【讨论】:
define BOGUS
lines
.....
endef
【讨论】:
ifeq 一样,但对我有用。谢谢!
不完全是您正在寻找的东西,但在精神上相似。我不希望它成为公认的答案,但也许它可以帮助某人。
假设您正在 VIM 中编辑您的 makefile:
决定要评论的行或使用“v”选择它们。
然后您可以使用正则表达式s/^/#/ 注释掉这些行
和s/^#// 来恢复它们。
--备注--
:(冒号).,+n
'<,'>s/^/#/
【讨论】: