【发布时间】:2015-07-25 07:50:21
【问题描述】:
我正在尝试向我的 makefile 添加一条警告消息。 Make 无法找到右括号。
以下内容来自我的 GNUmakefile:
341 ALIGNED_ACCESS = $(shell cat config.h | $(EGREP) -c "^#define NO_UNALIGNED_DATA_ACCESS")
342 ifeq ($(ALIGNED_ACCESS),0)
343 $(info WARNING: NO_UNALIGNED_DATA_ACCESS is not defined in config.h)
344 endif
投诉:
$ make
GNUmakefile:341: *** unterminated call to function 'shell': missing ')'. Stop.
我确实在 makefile 中另外输出了 25 次,所以我不确定为什么它无法为上面的 shell 找到正确的括号。
我还将命令移到第 1 行进行测试,我得到了相同的消息(以行号更改为模)。为了好玩,我添加了一个不平衡的右括号,但我得到了同样的信息。
为什么make找不到合适的括号?
如何强制 make 执行命令?
【问题讨论】:
-
顺便说一句,将
EGREP放在变量中似乎是错误的。 -
@tripleee - 我们将
egrep放在一个变量中,以便用户可以在egrep未按预期执行时覆盖它。你有什么推荐的? -
首先,如果性能是一个问题,请放弃useless
cat。无论如何,我很难想象egrep处理几千个 C 源文件的速度太慢,或者普通用户能够设计出更快的替代方案。 -
@triplee - “如果性能是一个问题......” - 不,性能不是问题。关于
cat的好点...我从没想过。但是egrep呢? -
那么“未按预期执行”是什么意思?
grep -E应该足够便携,除非你的目标是明显的 pre-POSIX 平台。
标签: shell makefile gnu-make cat