u-boot makefile $$

落花浮王杯 提交于 2019-11-30 12:29:14

define filechk_uboot.release
    echo "$(UBOOTVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
endef

# Store (new) UBOOTRELEASE string in include/config/uboot.release
include/config/uboot.release: include/config/auto.conf FORCE
    $(call filechk,uboot.release)

 

跟我一起学Makefile.pdf:

变量在声明时需要给予初值,而在使用时,需要给在变量名前加上“$”符号,但最好用小括号“()”或是大括号“{}”把变量给包括起来。如果你要使用真实的“$”字符,那么你需要用“$$”来表示。

$(UBOOTVERSION)表示变量UBOOTVERSION

$$表示$

$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree)) --> $($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))

 

# SHELL used by kbuild
CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
      else if [ -x /bin/bash ]; then echo /bin/bash; \
      else echo sh; fi ; fi)

以上 用到了$$var:访问shell命令中定义的变量var。在Makefile的规则命令,如果相互之间没有使用';\'连接起来的话,相互之间是不能共享变量的。

CONFIG_SHELL :=/bin/bash

 

$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree)) --> $(/bin/bash $(srctree)/scripts/setlocalversion $(srctree)) 这是一条shell命令

$() 和`` 都表示 `命令` $(命令)

另外:$$var才表示访问shell命令中定义的变量var

$$(var)--> $(var) var要是一条命令,否则会报错 。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!