0

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

无法推断出问题所在,我在 makefile 中插入了这段代码:

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

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

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

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

条件如何或为什么评估为真?

4

1 回答 1

1

如果它对于仅包含上述内容的 makefile 的行为如此,那么它是clearmake. 我知道 clearmake 对 GNU make 的模拟是不完整的,但这看起来很简单。

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

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

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

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

如果你用 GNU make 尝试你的原始版本,你会得到一个错误:

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

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

于 2013-05-23T11:52:28.527 回答