Makefile将字符串附加到变量

时间:2015-07-10 14:48:06

标签: makefile

我想生成命令:

taskset -c 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14 ./myprogram

首先尝试:我使用echo:

taskset 0$(shell for n in $(shell seq 1 14);do echo ",$$n";done) ./myprogram

但是echo在迭代之间提供了额外的尾随空间

taskset -c 0,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 ,12 ,13 ,14 ./myprogram

,无法识别任务集功能。所以,我试图通过我自己附加字符串,

taskset -c $(shell CORE_NUM=0; for n in $(shell seq 1 14); do CORE_NUM:=$(CORE_NUM)","$$n;done;echo $(CORE_NUM)) ./myprogram

但是,我不熟悉Makefile,我收到了一个错误:

/bin/sh: 1: CORE_NUM:=0,1: not found
/bin/sh: 1: CORE_NUM:=0,2: not found
/bin/sh: 1: CORE_NUM:=0,3: not found
/bin/sh: 1: CORE_NUM:=0,4: not found
....
/bin/sh: 1: CORE_NUM:=0,14: not found
taskset -c 0 ./myprogram

有人可以帮忙修复它吗?

1 个答案:

答案 0 :(得分:1)

根本不在这里使用$(shell)。没有意义。 $(shell)函数用于在 make 上下文中运行shell命令。但是你现在还没有制造背景。您在配方中的 shell 上下文中,因此只需使用普通的shell命令替换。

taskset -c "0$$(printf ,%s $$(seq 1 14))" ./myprogram