首页 > 其他分享 >Makefile中,call `$(call)` 函数

Makefile中,call `$(call)` 函数

时间:2024-05-28 21:56:46浏览次数:25  
标签:... 函数 boot Makefile spl call

在Makefile中,`$(call ...)` 是一个函数调用语法,它允许你定义一个名为函数的宏,并在Makefile的其他地方调用它。这种功能提供了一种重用Makefile中复杂或经常重复的代码的方法。

`$(call ...)` 语法的基本形式如下:

```make
$(call function_name,arg1,arg2,...)
```

这里,`function_name` 是你定义的函数的名称,而 `arg1, arg2, ...` 是传递给该函数的参数列表。

要在Makefile中定义一个函数,你可以使用 `define` 和 `endef` 指令:

```make
define function_name
# 函数体,可以使用 $(1), $(2), ... 来引用传递的参数
endef
```

在函数体内,`$(1)`, `$(2)`, ... 用来引用传递给函数的参数。

例如,假设我们有一个简单的函数,该函数将两个参数连接在一起,并在它们之间添加一个空格:

```make
define concatenate
$(1) $(2)
endef

all:
@echo $(call concatenate,Hello,World)
```

当你运行 `make all` 时,它将输出 `Hello World`。

在你的例子中,`$(call if_changed,u-boot-spl)` 调用了一个名为 `if_changed` 的函数,并传递了 `u-boot-spl` 作为参数。这个函数可能检查目标文件(如 `u-boot-spl`)是否自上次构建以来已经改变,如果改变了,则重新执行与 `u-boot-spl` 相关的构建命令。

`if_changed` 函数通常是在一些复杂的构建系统中预定义的,用于处理常见的构建和依赖检查逻辑。它不是GNU make的标准部分,但可能是某个特定项目或构建系统(如U-Boot的构建系统)中定义的。

使用 `$(call ...)` 可以使Makefile更加模块化和可维护,因为它允许你将复杂的逻辑封装在可重用的函数中。

标签:...,函数,boot,Makefile,spl,call
From: https://www.cnblogs.com/zxdplay/p/18219002

相关文章

  • SAP:REUSE_ALV_LIST_DISPLAY 函数实现此类型ALV
    *&Report-1类型程序的主要功能是通过WRITE语句为用户提供方便的报表数据.*&与此功能类似的就是利用FUNCTIONALV创建的报表。利用*&REUSE_ALV_LIST_DISPLAY函数实现此类型ALV。*&---------------------------------------------------------------------**&Report......
  • SAP: REUSE_ALV_GRID_DISPLAY 函数实现此类型ALV
     *&Report-1类型程序的主要功能是通过WRITE语句为用户提供方便的报表数据.*&与此功能类似的就是利用FUNCTIONALV创建的报表。利用*&REUSE_ALV_GRID_DISPLAY函数实现此类型ALV。*----------------------------------------------------------------------**&-----......
  • C语言中strncpy、strncat、memcpy、memmove函数的详解与比较
    目录目录C语言中strncpy、strncat、memcpy、memmove函数的详解与比较一、strncpy函数二、strncat函数三、memcpy函数四、memmove函数C语言中strncpy、strncat、memcpy、memmove函数的详解与比较一、strncpy函数strncpy是C语言标准库中的一个函数,用于将字符串src复制到字符串d......
  • python 第四章 函数 (pycharm) (2)
    一:变量作用域变量的作用域就是指在代码中变量能使用的位置变量的引用deffunc(a):print(a)data=10func(data)#a=data参数a引用了data的数据data2=20func2(data2)变量的分类全局变量在函数外定义,可以在代码中任意位置使用的变量局部变量在函数......
  • [3B1B]从三角函数到 GF
    三角函数高中数学必一第五章。弧度制通过数学知识可以证明,对于一个圆的圆心角\(α\),其所对的弧\(l\)与半径的比值\(\frac{l}{r}\)是确定的。相应的,\(\frac{l}{r}\)的确定也能确定\(\alpha\),因此我们建立弧度制:\[|\alpha|=\frac{l}{r}\]一个角是正角,当且仅当它的终边......
  • JS-03深入了解构造函数
    目录1引入构造函数2通过构造函数创建对象-内置3 自定义一个构造函数来创建对象3.1 构造函数的概念3.2关于newObject() 3.3构造函数的执行过程3.3.1构造函数的返回值   3.3.2如何判断一个数据是否是复杂数据类型?3.3.3为什么要理解构造函数的返回值?3.3.4......
  • 【代码之髓】研究编程语言的核心点——结构化编程、函数、异常、作用域、类型、容器、
    写在前面本文基于人民邮电出版社发行的西尾泰和先生所著《代码之髓》有一定读书笔记性质,算是精简版改写。目录写在前面如何深入高效地学习语言从比较中学习从历史中学习程序设计语言诞生史语法的诞生程序的流程控制if诞生以前whilefor函数为什么要有函数函数的返回......
  • strcpy函数和memcpy函数的区别
    strcpy和memcpy的区别1.复制内容:strcpy:专门用于复制字符串,它会一直复制直到遇到源字符串中的'\0'结束符。这意味着如果源字符串长度超过了目标缓冲区的大小(不包括'\0'),就会发生缓冲区溢出,这是一个常见的安全隐患。memcpy:可以复制任意内容,如字符数组、整型、结构体、类等。它按......
  • React中何时使用memo、useCallback、useMemo以及useRef进行性能优化
    react无法做到像vue一样自动收集依赖更新(期待react19的ReactCompiler),需要开发人员手动的进行性能优化,此时memo、useCallback、useMemo、useRef就是性能优化中的重要API本文虽然介绍可应用场景,但是正常开发中,尤其是useCallback。除非遇到性能问题或者组件库封装,亦或......
  • 使用数据处理函数
    selectvend_name,Upper(vend_name)asvend_name_upcasefromvendorsorderbyvend_nameLeft()Lenght()Locate()Lower()LTrim()Right()RTrim()Trim()Soundex()selectcust_name,cust_contactfromcustomerswherecust_contact='Y.Lie'发音......