Makefile:根据二进制文件的名称以不同方式运行二进制文件
我的 Makefile 中有这个:
BINS = $(shell echo *.bin)
.PHONY: $(BINS)
run: $(BINS)
*.bin:
./$@
我将其运行为 make -j 8
这样它会查找所有以 .bin 结尾的文件,并使用 make 的 -j 选项并行运行它们(Makefile 在后台运行进程)
我需要修改makefile,以便将 mpi*.bin 类型的所有文件运行为 mpirun -np 2 ./mpi*.bin
,并将其余可执行文件运行为 ./
您的帮助。
I have this in my Makefile:
BINS = $(shell echo *.bin)
.PHONY: $(BINS)
run: $(BINS)
*.bin:
./$@
I run it as make -j 8
This way it looks for all files ending with .bin, and runs them in parallel using make's -j option (Makefile run processes in background)
I need to modify the makefile so that it runs all files of the type mpi*.bin as mpirun -np 2 ./mpi*.bin
, and the remaining executable files as ./<filename>.bin
Thanks for your help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是我用来测试我的答案的一个简单示例:
创建一些空的测试文件,以及基于您的 Makefile:
这里的关键是带前缀文件的规则遵循非前缀规则。如果不是,则前缀规则将被覆盖。
这似乎适用于区分带前缀和非带前缀的文件,但给出以下输出:
我确信有一种方法可以抑制这些警告或做得更好,但这种方法似乎有效。
Here is a simple example I used to test my answer:
to create some empty test files, and my Makefile based on yours:
It is key here that the rule for the prefixed files follows the non-prefixed rule. If not, the prefixed rule will be overridden.
This seems to work for distinguishing between the prefixed and non-prefixed files, but gives the following output:
I'm sure that there's a way to suppress those warnings or do it better, but this approach seems to work.