生成文件在检查操作系统时会引发错误



我是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

相关内容

最新更新