为意外标记附近的ifeq:语法错误生成错误
我正在写一个Makefile,在一个地方做string匹配,代码是这样的:
if test ...; \ then \ shell scripts... \ fi ifeq ($(DIST_TYPE),nightly) shell scripts ... endif
这里第一个if
是shell脚本,第二个ifeq
是GNU Make的条件。 但是会产生以下错误:
ifeq(每晚,每晚)
/ bin / sh:-c:第0行:意外标记附近的语法错误`nightly,nightly'
/ bin / sh:-c:line 0:`ifeq(nightly,nightly)'
这里发生了什么事? Make似乎试图调用shell。
谢谢。
我绕着代码玩,发现条件语句应该没有缩写,这就解决了我的问题。
如果没有缩进,Make会把它当作自己的指令; 否则,它被视为一个shell脚本。
示例代码
错误:
target: ifeq (foo, bar) ... endif
正确:
target: ifeq (foo, bar) ... endif
另外,如果在定义函数中使用条件语句,如:
define myFunc ifeq (foo, bar) ... endif enddef
在这种情况下,Make也会将其视为一个shell脚本。
这个问题可以通过使用if函数来解决:
define myFunc $(if condition,then-part[,else-part]) enddef