makefile的条件部分始终评估为true

时间:2013-05-23 06:32:20

标签: makefile

我有一个基于makefile的遗留构建系统,我正在尝试对其进行更改。我不熟悉make,所以在试错的基础上进行更改。

无法推断出问题是什么我在makefile中插入了这段代码:

ARG1 = GCC
ARG2 = ARM
ifeq($(ARG1),$(ARG2))
$(warning *** WARNING ***)
endif

当我运行make时,我总是得到打印:

   \PathToBuildDirectory\makefile.options:54:*** WARNING ***

注意:我使用带有-C gnu选项的clearmake。

条件如何或为何如此推测为真?

1 个答案:

答案 0 :(得分:1)

如果它仅对包含上述内容的makefile采用这种方式,那么它就是clearmake中的错误。我知道clearmake对GNU make的仿真是不完整的,但这看起来很简单。

但是,既然你已经回复了一个错误,那么显示ARG1和ARG2的值是不是很简单?也许他们是平等的。也许在命令行中设置了一个或两个。也许其他地方的一个或两个都分配了override选项。也许使用-e选项调用clearmake,并在环境中设置其中一个或两个变量。

如果你展示他们的价值观,那么你就会知道。

ETA:也许问题是这样的:在GNU中你必须在ifeq之后放一个空格,如下所示:

ifeq ($(ARG1),$(ARG2))

如果您尝试使用GNU make的原始版本,则会收到错误消息:

Makefile:3: *** missing separator.  Stop.

但我想clearmake只是忽略了该行而没有任何错误消息。