jit*_*hsk 10 parallel-processing makefile
我在Makefile中有这个:
run:
for x in *.bin ; do ./$$x ; done
Run Code Online (Sandbox Code Playgroud)
这样它就可以逐个启动所有可执行文件.我想做这个:
run:
for x in *.bin ; do ./$$x &; done
Run Code Online (Sandbox Code Playgroud)
这样它就会启动每个可执行文件并将其放在后台.当我放入&符号时,上面的语句出现语法错误.
我不想调用make,make &因为这将在后台运行进程但仍然是一个接一个,而我希望单个可执行文件在后台运行,这样在任何时刻我都有多个可执行文件在运行.
先感谢您.
Mat*_*man 14
尝试通过子shell执行:
run:
for x in *.bin ; do (./$$x &); done
Run Code Online (Sandbox Code Playgroud)
也许make -j是一个更好的选择.尝试Makefile看起来像这样的东西:
BINS = $(shell echo *.bin)
.PHONY: $(BINS)
run: $(BINS)
*.bin:
./$@
Run Code Online (Sandbox Code Playgroud)
然后执行make -j <jobs>哪里<jobs>是要运行的同时作业的数量.
您获得的语法错误是shell语法错误,而不是make语法的问题.&符号实际上是一个命令终止符/分隔符,就像分号一样; 所以表达你想要的for循环的方法是:
run:
for x in *.bin ; do ./$$x & done
Run Code Online (Sandbox Code Playgroud)
然而,正如其他人所指出的那样,在实际情况下,通常更灵活地将事物直接表达为依赖关系,而不是复杂的shell片段和shell循环.
| 归档时间: |
|
| 查看次数: |
11917 次 |
| 最近记录: |