【发布时间】:2015-11-08 09:27:22
【问题描述】:
我试图在编译期间检查目标名称(在 Makefile 中定义)。例如,如果目标名称的名称超过 10 个字符,则编译过程中止,并抛出错误消息“目标名称超过 10 个字符”。
部分代码:
TARGETNAME:
@if [ ${#TARGET_NAME} -ge 10 ]; then \
echo "TARGET name exceeds 10 chars"; \
exit; \
fi
然后当我尝试编译时,make TARGETNAME,我收到一条错误消息:
/bin/sh: line 0: [: -ge: unary operator expected
我不确定这个 Makefile 是用 Bash 还是其他语言编写的。语法看起来像是在 Bash 脚本中,但我在代码中没有看到像 SHELL := /bin/bash 这样的命令。
感谢大家的帮助,问题解决了
【问题讨论】:
-
1. 10后留空间。2.将ercho替换为echo。
-
@SMA 我在这篇文章中打错了字,但在代码中它和你说的完全一样。
-
如果之前@在做什么?你能发布实际的脚本(如果它很大,也可以是其中的一部分)
-
@IgnacioVazquez-Abrams 我对使用 bash 脚本的 makefile 完全陌生。我用它来获取 TARGETNAME 的长度,并将其与 10 进行比较。
-
@M.S 那不是 Bash。那是有效的 Bourne shell,或等效的。错误甚至说
/bin/sh。@是一个制造的东西。
标签: bash compilation makefile