Makefile的执行顺序

时间:2014-02-06 13:57:33

标签: makefile

对于像这样的Makefile:

HOSTARCH := $(shell uname -u | sed -e s/i.86/i386/)    
HOSTOS := $(shell uname -s | tr '[:upper:]''[:lower:]')         
export HOSTARCH HOSTOS      

unconfig:
          @rm -f $(obj)include/config.h

versatilepb_config: unconfig
@board/versatile/split_by_variant.sh $@

当我录制“make versatilepb_config”时,它会在哪里开始执行?从一开始还是从“versatilepb_config”?我们现在获得HOSTARCH,HOSTOS的价值与否?那我怎么能在控制台中打印HOSTOS / HOSTARCH的值呢?

1 个答案:

答案 0 :(得分:1)

make build系统没有按顺序执行(第1行,第2行等)。

执行make versatilepb_config时,它将按此顺序执行:

  • 设置全局变量(在您的情况下为HOSTARCHHOSTOS
  • 找到规则versatilepb_config
  • 然后它会找到预先要求的规则unconfig
  • 然后它将执行@rm -f $(obj)include/config.h
  • 然后它将执行@board/versatile/split_by_variant.sh $@

如果有任何失败,它将在该步骤停止。

因此,如果您想打印unconfig步骤中的值,只需将其添加到那里:

unconfig:
          @rm -f $(obj)include/config.h
          echo $HOSTARCH
          echo $HOSTOS