makefile的条件部分始终计算为true

makefile的条件部分始终计算为true,makefile,Makefile,我有一个基于遗留makefile的构建系统,我正在尝试对其进行更改。我不熟悉make,因此在尝试和错误的基础上进行更改 无法推断问题是什么,我在makefile中插入了这段代码: ARG1 = GCC ARG2 = ARM ifeq($(ARG1),$(ARG2)) $(warning *** WARNING ***) endif 当我运行make时,我总是得到打印: \PathToBuildDirectory\makefile.options:54:*** WARNING *** 注

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

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

ARG1 = GCC
ARG2 = ARM
ifeq($(ARG1),$(ARG2))
$(warning *** WARNING ***)
endif
当我运行make时,我总是得到打印:

   \PathToBuildDirectory\makefile.options:54:*** WARNING ***
注意:我正在使用带有-C gnu选项的clearmake。


条件如何或为什么求值为true?

如果它对仅包含上述内容的makefile有这种行为,则它是
clearmake
中的一个bug。我知道clearmake对GNU make的模拟是不完整的,但这似乎很简单

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

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

ETA:可能问题在于:在GNU make中,您必须在
ifeq
后面加空格,如下所示:

ifeq ($(ARG1),$(ARG2))
如果您使用GNU make尝试您的原始版本,您将得到一个错误:

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

但是我猜clearmake只是忽略了这一行,没有任何错误消息。

我以一种通用的方式输入了代码片段。我甚至试过这样做:ifeq(ARM,GNU)$(warning***warning***)endif现在即使这样也会在输出中生成print语句!因为这种行为是如此的怪异和不可思议,我检查了make手册中ifeq语句的语法,没有发现明显的用法错误。有什么不对劲的线索吗?