我有一个生成文件的设置,其中它接受被在构建时解析,以确定要使用的编译器,命令行参数CPULIST
。
所以,我打算通过下面的命令来构建: make all CPULIST="arm x86"
。 然后,我创造了一些虚假的规则,以便make all
的循环,有效的作用:
make all CPULIST=x86
make all CPULIST=arm
规则:
.PHONY: all
all:
@echo "Detected CPULIST:${CPULIST_DETECTED}"
@echo "CPULIST:${CPULIST}"
@for cpu in $(CPULIST_DETECTED); do \
echo "CPU:$${cpu}"; \
variant_$${cpu}=abc; \
echo "variant_$${cpu}: $${variant_x86}"; \
$(MAKE) build CPULIST=$$cpu; \
done
@true
.PHONY: build
build: sanity_check $(TARGET)
@true
如果这是一个bash脚本,我会用variant_${cpu}
,例如,有它动态地创建变量名和任务,如:
variant_x86=abc;
variant_arm=abc;
看来我没有收到转义序列正确的,至少在GNU做语法。
大厦的依赖文件为list_algorithms.o
Detected CPULIST:x86 arm
CPULIST:test arm x86
CPU:x86
/bin/sh: 3: variant_x86=abc: not found
variant_x86:
make[1]: Entering directory `/home/svn/public/lib/libMYLib'
CPULIST:x86
我似乎有两个问题:
- 我的字符串扩展似乎有什么东西在makefile试图扩张后执行
- 我似乎并没有被赋予什么
variant_x86
,所以语法是关闭的。
如何解决这两个问题?
谢谢。