【发布时间】:2020-04-20 06:52:49
【问题描述】:
我需要根据用户输入运行目标。目前在我们的 makefile 中,如果目录存在,我们正在运行规则。我正在尝试更新我们的 makefile 以检查用户输入并相应地运行,而不是为所有可用文件夹(文件夹 = 项目)运行目标。
我的目录结构是这样的:-
/home/ravi/build/test/usb/usb.trm
/home/ravi/build/test/flash/flash.trm ....
这是我的规则:-
$(TGTBUILD)/%f.c: $(CURDIR)/test/%.trm
str=$*; \
IFS='/'; \
read -ra ADDR <<< "$$str"; \
for i in "$${ADDR[@]}"; do \
value=$$i; \
break; \
done; \
if [[ $(PROJECTS) == *$$value* ]]; then \
$(test_c) \
fi
$(PROJECTS) 变量在运行时有用户给定的项目。我在运行 makefile 时给出了usb。所以 makefile 必须只为usb 项目运行,而不是flash 项目。为了达到同样的效果,我对规则进行了上述更改,以检查规则是否仅针对用户给定的项目运行。
我遇到以下问题:-
str=cdn_ahb/cdn_ahb; \
IFS='/'; \
read -ra ADDR <<< "$str"; \
for i in "${ADDR[@]}"; do \
value=$i; \
break; \
done; \
if [[ ccix == *$value* ]]; then \
mkdir -p /home/ravi/workspace/client_test/build/Release/project/usb
/bin/sh: -c: line 9: syntax error: unexpected end of file
我的语法有什么问题吗?或者你能建议我用其他方法来实现我的要求吗?
【问题讨论】:
-
您没有告诉我们
test_c变量的值,这是这里的关键问题,因为这就是发生故障的地方。