在 Makefile 中编译之前运行脚本
在 Makefile 中,我有:
all: $(PROG)
$(PROG): $(CPP_OBJS)
$(CPP_LD) $(CPP_LD_FLAGS) $(CPP_OBJS) -o $(PROG)
我想在编译之前添加一些脚本,所以我尝试了:
all: $(PROG)
$(PROG): $(CPP_OBJS)
sh script.sh ; $(CPP_LD) $(CPP_LD_FLAGS) $(CPP_OBJS) -o $(PROG)
但它不起作用。
在这种情况下,在编译之前运行脚本的正确方法是什么?
谢谢
in a Makefile, I have:
all: $(PROG)
$(PROG): $(CPP_OBJS)
$(CPP_LD) $(CPP_LD_FLAGS) $(CPP_OBJS) -o $(PROG)
I would like to add some script before the compilation so I tried:
all: $(PROG)
$(PROG): $(CPP_OBJS)
sh script.sh ; $(CPP_LD) $(CPP_LD_FLAGS) $(CPP_OBJS) -o $(PROG)
but it does not work.
What is the right way of running a script in this case before the compilation?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
将脚本执行放在单独的行上。
这是因为 make 非常愚蠢,并且不能按照您想要的方式理解分号。好消息是新线很便宜!
Put the script execution on a separate line.
This is because make is pretty stupid and doesn't understand semicolons in the way you want. Good thing that newlines are cheap!
我认为您可以只使用多个目标,但如果使用 $(PROG) 而不是全部作为目标,则不会运行脚本。
否则,您可以使用单独的行,这将始终被应用。
I think you could just use multiple targets, but this won't run the script if $(PROG) is used instead of all as the target.
Otherwise, you could use separate lines, which would always be applied.