在Makefile中编译之前运行脚本

时间:2010-03-26 16:14:23

标签: 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)

但它不起作用。

在编译之前,在这种情况下运行脚本的正确方法是什么?

由于

2 个答案:

答案 0 :(得分:2)

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

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

这是因为make非常愚蠢,不会以你想要的方式理解分号。新行很便宜!

答案 1 :(得分:0)

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

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)