【问题标题】:Echoing in makefile before building dependencies在构建依赖项之前在 makefile 中回显
【发布时间】:2012-08-04 10:20:10
【问题描述】:

在我的 makefile 中,我想在构建目标的依赖项之前打印一条进程消息(类似于“Build $(PROJ_NAME) project...”)。例如,我的目标如下所示:

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

在 $(OBJS) 中构建依赖项后,将打印我的构建消息。是否有可能在创建目标之前打印一条消息?

【问题讨论】:

  • 这是设计使然,因为在您执行 PROJ_NAME 中指定的操作之前,make 会处理您明确告诉 make 在执行您列出的操作之前要处理的事情

标签: c makefile


【解决方案1】:

您可以在目标文件之前添加另一个依赖项,该依赖项总是被创建的。像这样的:

$(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) 中的目标之前执行。

【讨论】:

  • 依赖于构建先决条件的顺序是一种不好的做法,因为它没有被指定并且在并行构建中不会像预期的那样运行。
猜你喜欢
  • 2015-11-07
  • 1970-01-01
  • 2012-10-24
  • 1970-01-01
  • 2018-05-20
  • 1970-01-01
  • 1970-01-01
  • 2012-10-04
  • 2013-07-08
相关资源
最近更新 更多