【发布时间】:2020-11-23 21:14:41
【问题描述】:
你好我想问一下如何在makefile中创建bash变量。 下面的代码确实有效,但变量“目标”一直为空。我如何在makefile中实际创建“targets”和“current_target”变量?问题是我必须从实际的 bash 命令创建这些变量。
SHELL=/bin/bash
...
MAIN_APPS = 01_prep 02_prep 03_prep 04_prep 05_prep
foo : .check_targets .check_segment
@for f in $(MAIN_APPS) ; do \
targets=$(expr $(last_target) + 1); \
echo $(targets) + 1; \
curent_target=$(expr "$(echo $(f) | head -c 2) + 0"); \
if [ $(targets) = $(current_target)]; then \
break; \
else \
make $(f); \
fi \
done
输出:
make foo last_target="02" segm=KI
+ 1
如果我传递一个参数 last_target="05"
【问题讨论】:
-
如果你想使用
$()作为shell进程替换,你必须转义$来做。例如:targets=$$(expr ... -
您似乎混淆了可以使用
$(variable)扩展的make变量和可以扩展为$variable或${variable}的shell 变量。请注意,如果您希望$由 shell 而非make解释,则必须编写$$。 -
是的,我对使用 $ $$ 感到困惑,但现在我知道如何在 makefile 中使用它们,谢谢
标签: linux bash makefile gnu-make