在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)
但它不起作用。
在编译之前,在这种情况下运行脚本的正确方法是什么?
由于
答案 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)