使用GNU Make时.if条件语句报'missing separator'错误的求助
Makefile报错"missing separator"的原因与解决方法
问题原因
你使用的.if/.endif是BSD Make(FreeBSD等BSD系统默认的构建工具)的专属条件语法,而当前运行的是GNU Make 4.2.1。两者的语法规则不兼容,GNU Make无法识别BSD Make的条件判断格式,因此触发"missing separator"错误。
解决方法
方案1:使用BSD Make执行
如果你的系统是FreeBSD/OpenBSD等BSD系列,直接调用BSD Make运行即可:
bmake # FreeBSD系统中默认的make就是BSD Make,也可以直接用: make
方案2:修改代码适配GNU Make
将BSD Make的条件语法替换为GNU Make支持的ifeq/ifneq语法,修改后的代码如下:
# 写法1:判断不等于0时添加 ifneq ($(WITH_DOT),0) VIS+= day21.dot day21.pdf endif # 或者等价的写法2: ifeq ($(WITH_DOT),0) # 当WITH_DOT为0时不执行任何操作 else VIS+= day21.dot day21.pdf endif
修改完成后,即可用GNU Make正常执行该Makefile。
内容的提问来源于stack exchange,提问作者Tom Huntington
相关产品推荐
相关产品推荐

