如何在Makefile规则中将Bash脚本输出作为命令行参数传递
解决方法
在Makefile里要实现把脚本输出作为命令行参数传递,核心是用shell命令替换,但要注意Makefile对$符号的特殊处理——需要用$$来表示shell里的单个$。
方法1:使用你已有的Bash脚本
假设你的脚本名叫gen_arg.sh,先确保它有可执行权限:
chmod +x gen_arg.sh
然后在Makefile里写规则:
# 定义执行程序的规则 run: ./schoolprogram $$(./gen_arg.sh)
这里的$$(./gen_arg.sh)会让shell执行你的脚本,把输出内容作为参数传给./schoolprogram,而不是传递脚本路径本身。
方法2:直接嵌入Python命令(省去额外脚本)
如果不想单独维护一个sh脚本,可以直接把生成参数的Python命令写到Makefile里,更简洁:
run: ./schoolprogram $$(python -c 'print "A"*1000 + "Q"*200')
关键说明
Makefile里的$是用来引用变量的,所以要让shell识别命令替换的$(),必须把$转义成$$,这样Makefile处理后,传给shell的就是正常的$(...)命令替换语法。
内容的提问来源于stack exchange,提问作者finjasnappy
相关产品推荐
相关产品推荐

