【发布时间】:2017-05-07 04:10:32
【问题描述】:
我正在为具有多个模块的应用程序编写 makefile (GNU make)。更准确地说,对于每个模块,我都有一个 makefile。另外,我有一个主makefile,它调用每个模块的makefile。我一直在尝试从这些 makefile 中提取出随处需要的几个变量。我在主 makefile 的开头包含了一个 init.mk 文件,其中包含以下内容:
export OS = linux
ifeq ($(OS),linux)
export SHELL := /bin/bash
else ifeq ($(OS),windows)
export SHELL := cmd
else
export SHELL :=
endif
当我使用它运行 make 时,我收到错误 127,因为比较测试失败并且 SHELL 变量设置为空。如果我在else 部分添加/bin/bash,make 不会失败。
为什么没有正确比较 OS 变量?
问候
【问题讨论】:
-
根据操作系统以特殊方式处理
SHELL,例如在Windows上它甚至可能是ignore anything you say。 -
export OS = linux行的末尾有多余的空格吗? -
我有空格和评论
-
@MasScientist 如果你想写一个答案,我会接受的。这就是问题所在。