2012-08-04 40 views
2

在我的makefile中,我希望在构建目标的依赖关系之前打印一个流程消息(类似“Build $(PROJ_NAME)project ...”)。例如我的目标看起来像下面这样:在构建依赖关系之前在makefile中回声

$(PROJ_NAME): $(OBJS) 
    echo "Build $(PROJ_NAME) project..." 
    $(LD) $(LDFLAGS) --gc-sections "-T$(MISC_DIR)/$(PROJ_NAME).ld" ... 

执行这个目标$(OBJS)建立依赖关系后,印我生成消息。在创建目标之前有没有可能打印一条消息?

+1

这是设计出来的,因为在您执行PROJ_NAME中指定的操作之前,请在采取您列出的操作之前照顾您特别讲述的事情,以便照顾好您的行为 – tbert 2012-08-04 10:51:41

回答

2

您可以在对象文件之前添加另一个依赖项,它总是被创建。事情是这样的:

$(PROJ_NAME): pre_build $(OBJS) 
    $(LD) $(LDFLAGS) --gc-sections "-T$(MISC_DIR)/$(PROJ_NAME).ld" ... 

.PHONY: pre_build 
pre_build: 
    @echo "Build $(PROJ_NAME) project..." 

pre_build目标将(在大多数情况下,正常的)总是在目标之前$(OBJS)执行。

+4

依靠订单是一种不好的做法构建先决条件,因为它没有被指定,并且在并行构建中不会像预期的那样运行。 – 2012-08-04 12:20:06