我是Makefile的新手。这是我目前拥有的:
install:
ifeq ($(OS),Windows_NT)
# do something
else
# do something
endif
但是make抛出这个错误:
ifeq (Windows_NT)
/bin/sh: -c: line 0: syntax error near unexpected token `Windows_NT'
/bin/sh: -c: line 0: `ifeq (Windows_NT)'
make: *** [install] Error 2
我不知道如何解决这个问题。请帮助我。
生成文件的内容采用 Make 语法,但配方除外。
$(info hello)
foo:
echo working
echo still working
$(info ...)
行是 Make 函数调用;echo
行是构成foo
规则配方的 shell 命令。每个 shell 命令开头的空格是 TAB 字符,而不是空格。这就是 Make 如何知道它是一个 shell 命令,要传递给 shell,而不是解释为 Make 代码。
你编写的条件是 Make 条件,你用 Make 语法编写它,但你把 TAB 放在行的开头,所以 Make 将它们传递给 shell,shell 抱怨它们无效(在其语言中)。
删除条件行开头的 TAB,但保留 shell 命令开头的 TAB:
install:
ifeq ($(OS),Windows_NT)
echo doing something
else
echo doing something else
endif