首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OS X上未正确检测OSTYPE

OS X上未正确检测OSTYPE
EN

Stack Overflow用户
提问于 2014-04-07 21:59:42
回答 2查看 1.1K关注 0票数 1

我的Makefile有:

代码语言:javascript
复制
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的案子。想法?

我在小牛队,如果这有关系的话。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-07 22:06:08

这应该是else ifeq,您可能需要达尔文而不是达尔文(取决于$(OSTYPE)是如何分配的)。例如:

代码语言:javascript
复制
else ifeq ($(OSTYPE), "Darwin")
  CHROMEDRIVER_EXE?=$(shell pwd)/vendor/selenium/chromedriver.mac
票数 1
EN

Stack Overflow用户

发布于 2014-04-08 03:58:50

这里有许多问题;第一个也是最重要的一点是,您还没有向我们展示如何获得OSTYPE的值,因此很难确切地知道您需要进行哪些更改。

第一个问题是,正如招股说明书所言,正确的格式是else ifeq而不是elseifeq。由于第一个ifeq不匹配,而make无法识别其他语句,因此您基本上编写了以下内容:

代码语言:javascript
复制
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变量的值最好也包括双引号,否则这些值将永远不匹配。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22923916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档