我的Makefile有:
ifeq ($(OSTYPE), "linux-gnu")
CHROMEDRIVER_EXE?=$(shell pwd)/vendor/selenium/chromedriver.linux.64
elseifeq ($(OSTYPE), "darwin")
CHROMEDRIVER_EXE?=$(shell pwd)/vendor/selenium/chromedriver.mac
elseifeq ($(OSTYPE), "cygwin")
CHROMEDRIVER_EXE?=$(shell pwd)/vendor/selenium/chromedriver.exe
elseifeq ($(OSTYPE), "msys")
CHROMEDRIVER_EXE?=$(shell pwd)/vendor/selenium/chromedriver.exe
elseifeq ($(OSTYPE), "win32")
CHROMEDRIVER_EXE?=$(shell pwd)/vendor/selenium/chromedriver.exe
elseifeq ($(OSTYPE), "freebsd")
CHROMEDRIVER_EXE?=$(shell pwd)/vendor/selenium/chromedriver.linux.64
else
CHROMEDRIVER_EXE?=$(shell pwd)/vendor/selenium/chromedriver.NOTFOUND
endif出于某种原因,我得到了NOTFOUND的案子。想法?
我在小牛队,如果这有关系的话。
发布于 2014-04-07 22:06:08
这应该是else ifeq,您可能需要达尔文而不是达尔文(取决于$(OSTYPE)是如何分配的)。例如:
else ifeq ($(OSTYPE), "Darwin")
CHROMEDRIVER_EXE?=$(shell pwd)/vendor/selenium/chromedriver.mac发布于 2014-04-08 03:58:50
这里有许多问题;第一个也是最重要的一点是,您还没有向我们展示如何获得OSTYPE的值,因此很难确切地知道您需要进行哪些更改。
第一个问题是,正如招股说明书所言,正确的格式是else ifeq而不是elseifeq。由于第一个ifeq不匹配,而make无法识别其他语句,因此您基本上编写了以下内容:
ifeq ($(OSTYPE), "linux-gnu")
CHROMEDRIVER_EXE?=$(shell pwd)/vendor/selenium/chromedriver.linux.64
...a whole bunch of other stuff make doesn't care about...
else
CHROMEDRIVER_EXE?=$(shell pwd)/vendor/selenium/chromedriver.NOTFOUND
endif如果您试图在OSTYPE的值与第一个ifeq匹配的情况下运行它,则会得到许多语法错误。
第二个潜在的问题是,GNU 3.81和更高版本中的else <condition>格式是可用的,因此确保您没有使用旧版本。
最后一个可能的问题是,make是在做文本比较,而且它对shell引用一无所知。您正在将$(OSTYPE)与"linux-gnu"这样的值进行比较,其中包括引号。因此,OSTYPE变量的值最好也包括双引号,否则这些值将永远不匹配。
https://stackoverflow.com/questions/22923916
复制相似问题