变量允许覆盖和“简单扩展”?

时间:2015-07-25 10:26:44

标签: bash variables makefile gnu-make

我在第73行的GNU Makefile中有以下内容:

RELEASE ?= $(shell $(UNAME) -r)
IS_FEDORA22_i686 = $(shell echo $(RELEASE) | $(EGREP) -i -c "fc22.i686")

它在BSD,Linux(Ubuntu和Fedora),OS X和Solaris上运行良好。但是,在Cygwin和MinGW上,它会生成以下内容(thanks cxw)。 Cygwin和MinGW使用Bash shell:

/bin/sh: -c: line 0: syntax error near unexpected token `('
/bin/sh: -c: line 0: `echo 2.0.4(0.287/5/3) | egrep -i -c "fc22.i686"'

从手册和6.2 The Two Flavors of Variables,我想我需要一个变量:

RELEASE ?::= $(shell $(UNAME) -r)

如何将变量设为可选“简单可扩展”?

1 个答案:

答案 0 :(得分:1)

一种方法是:

RELTEXT:=$(<whatever command>)
RELEASE?=$(RELTEXT)

即使RELEASE不是简单的可扩展,但您知道它将始终扩展为固定文本。