使用条件赋值时,Solaris中的Makefile错误

时间:2013-09-02 07:41:16

标签: makefile solaris

我在Solaris 11.1的Makefile中运行条件赋值运算符时遇到错误。但是我在Ubuntu中运行相同的Makefile时没有遇到任何错误。

version ?= 6.1
all:
    echo $(version)

注意:在回显之前,原始代码中的echo之前有一个标签。这里使用四个空格只是为了方便编辑。

Solaris 11.1中遇到错误:

make: Fatal error in reader: Makefile, line 1: Badly formed macro assignment

但是,Ubuntu上没有这样的错误。

2 个答案:

答案 0 :(得分:3)

最好使用gmake,因为许多Makefile都使用Gnu特有的功能。 Solaris make可能使用略有不同的语法。你可以阅读Solaris makefile manual;您会发现其中没有?=运算符。因此,你得到了这个错误。

答案 1 :(得分:2)

?=是GNU make添加的一个功能,它是Ubuntu上make的默认版本,但在Solaris上安装为gmake/usr/gnu/bin/make。 Solaris上的本机make命令不支持?=,在Solaris 11及更高版本的旧版本/usr/ccs/bin/make上安装/usr/bin/make

如果您需要在makefile中使用GNU扩展,请确保运行GNU make,而不是Solaris make。