在 Makefile 中编译之前运行脚本

发布于 2024-08-26 07:44:28 字数 367 浏览 3 评论 0原文

在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

暖阳 2024-09-02 07:44:28

将脚本执行放在单独的行上。

$(PROG): $(CPP_OBJS)
        sh script.sh
        $(CPP_LD) $(CPP_LD_FLAGS) $(CPP_OBJS)  -o $(PROG)

这是因为 make 非常愚蠢,并且不能按照您想要的方式理解分号。好消息是新线很便宜!

Put the script execution on a separate line.

$(PROG): $(CPP_OBJS)
        sh script.sh
        $(CPP_LD) $(CPP_LD_FLAGS) $(CPP_OBJS)  -o $(PROG)

This is because make is pretty stupid and doesn't understand semicolons in the way you want. Good thing that newlines are cheap!

几度春秋 2024-09-02 07:44:28

我认为您可以只使用多个目标,但如果使用 $(PROG) 而不是全部作为目标,则不会运行脚本。

all: $(SCRIPT) $(PROG)

$(SCRIPT):
        sh myScript.sh

$(PROG): $(CPP_OBJS)
        $(CPP_LD) $(CPP_LD_FLAGS) $(CPP_OBJS)  -o $(PROG)

否则,您可以使用单独的行,这将始终被应用。

$(PROG): $(CPP_OBJS)
        sh myScript.sh
        $(CPP_LD) $(CPP_LD_FLAGS) $(CPP_OBJS)  -o $(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.

all: $(SCRIPT) $(PROG)

$(SCRIPT):
        sh myScript.sh

$(PROG): $(CPP_OBJS)
        $(CPP_LD) $(CPP_LD_FLAGS) $(CPP_OBJS)  -o $(PROG)

Otherwise, you could use separate lines, which would always be applied.

$(PROG): $(CPP_OBJS)
        sh myScript.sh
        $(CPP_LD) $(CPP_LD_FLAGS) $(CPP_OBJS)  -o $(PROG)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文