Makefile目标命令序列中空行是否合法?Vim语法高亮是否有误?
Makefile空行合法性与Vim高亮问题解析
1. 空行是否属于合法的Make语法?
完全合法。根据GNU Make的规则,Makefile中的空行(无论是否带有TAB)都会被直接忽略,不会影响规则结构。你提供的Makefile里,中间的空行只是被Make当作无意义的空白内容跳过,两个echo命令仍然属于boo目标的命令序列,执行make boo时会依次输出foo和bar。
需要明确:只有以TAB开头的行才会被识别为目标的命令,空行(无TAB)既不会中断命令序列,也不会被当作命令执行,只是单纯被忽略。
2. Vim语法高亮异常是解析错误吗?
是的,这是Vim对Makefile语法解析的小问题。Vim的make语法文件在识别目标的命令序列时,没有正确处理命令行之间的空行,误将空行判定为命令序列的结束,导致后续的echo行没有被归入makeCommands语法组,从而失去高亮。这并非你的Makefile写法错误,只是Vim语法规则的局限性导致的。
你可以尝试手动调整Vim的make语法配置,或者使用更完善的Makefile语法插件来修复这个高亮问题。
内容的提问来源于stack exchange,提问作者Moberg
相关产品推荐
相关产品推荐

