我在第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)
如何将变量设为可选“简单可扩展”?
答案 0 :(得分:1)
一种方法是:
RELTEXT:=$(<whatever command>)
RELEASE?=$(RELTEXT)
即使RELEASE不是简单的可扩展,但您知道它将始终扩展为固定文本。