我有一个基于makefile的遗留构建系统,我正在尝试对其进行更改。我不熟悉make,所以在试错的基础上进行更改。
无法推断出问题是什么我在makefile中插入了这段代码:
ARG1 = GCC
ARG2 = ARM
ifeq($(ARG1),$(ARG2))
$(warning *** WARNING ***)
endif
当我运行make时,我总是得到打印:
\PathToBuildDirectory\makefile.options:54:*** WARNING ***
注意:我使用带有-C gnu选项的clearmake。
条件如何或为何如此推测为真?
答案 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只是忽略了该行而没有任何错误消息。