首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在GNU Make中,函数调用的输出被视为要由shell执行的单独行

。GNU Make是一个构建自动化工具,用于管理和构建软件项目。它使用Makefile文件来定义构建规则和依赖关系。

在Makefile中,可以使用函数来执行一些操作并返回结果。函数调用的输出可以被视为一个字符串,并且可以在Makefile中进一步处理或传递给其他命令。

函数调用的输出被视为要由shell执行的单独行,意味着它将被传递给shell命令进行处理。这样可以方便地使用shell命令对函数输出进行进一步处理,例如使用管道、重定向等操作。

以下是一个示例,展示了如何在GNU Make中使用函数调用的输出:

代码语言:txt
复制
# 定义一个函数,返回当前日期
define get_date
    date +%Y-%m-%d
endef

# 调用函数并将输出赋值给变量
DATE := $(shell $(get_date))

# 打印变量的值
$(info Current date is $(DATE))

# 使用函数输出作为shell命令的参数
build:
    mkdir -p $(shell $(get_date))

# 使用函数输出作为条件判断
ifeq ($(shell $(get_date)),2022-01-01)
    $(info Happy New Year!)
endif

在上面的示例中,定义了一个名为get_date的函数,用于返回当前日期。然后使用$(shell)函数调用get_date函数,并将输出赋值给变量DATE。通过$(info)函数打印出变量DATE的值。

build目标中,使用函数输出作为shell命令的参数,创建一个以当前日期命名的目录。

最后,在条件判断中使用函数输出,如果当前日期是2022-01-01,则打印出"Happy New Year!"。

这是GNU Make中使用函数调用输出的一个简单示例。在实际使用中,可以根据具体需求定义和使用不同的函数,并根据需要对函数输出进行进一步处理和利用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Linux makefile 教程 非常详细,且易懂

我们在UNIX下可能会使用不同的Shell,但是make的命令默认是被“/bin/sh”——UNIX的标准Shell解释执行的。除非你特别指定一个其它的Shell。...还有一个在“嵌套执行”中比较有用的参数,“-w”或是“–print-directory”会在make的过程中输出一些信息,让你看到目前的工作目录。...八、shell函数 shell函数也不像其它的函数。顾名思义,它的参数应该就是操作系统Shell的命令。它和反引号“`”是相同的功能。这就是说,shell函数把执行操作系统命令后的输出作为函数返回。...特别是Makefile的隐晦的规则可能会让你的shell函数执行的次数比你想像的多得多。 九、控制make的函数 make提供了一些函数来控制make的运行。...另外一个很有意思的用法是结合“-p”和“-v”来输出makefile被执行时的信息(这个将在后面讲述)。 五、make的参数 下面列举了所有GNU make 3.80版的参数定义。

4.3K20
  • Autoconf 详解

    make的大部分版本把MAKE设置成make的程序名以及它所需要的任何选项。(但许多版本并没有把在命令行中设定的变量的值包括进来,因此它们没有被自动地传递。)一些老版本的 make并不设定这个变量。...为了使用这个宏,在每个其他的、运行MAKE的目录中的`Makefile.in'添加一行: @SET_MAKE@ Makefiles中的替换 发布版本中每个包含了需要被编译或者被安装的文件的目录都应该含有一个文件...按照这种方式被替换到输出文件中的变量被称为输出变量。在configure中,它们是普通的shell变量。...在HP-UX中,该函数并不这样做。 对普通函数的检查 这些宏被用于寻找没有包括在特定函数测试宏中的函数。如果函数可能出现在除了缺省C库以外的库中,就要首先为这些库调用AC_CHECK_LIB。...如果给出了 action-if-found,它就是在找到一个函数的时候执行的附加的shell代码。你可以给出 `break’以便在找到第一个匹配的时候跳出循环。

    4.4K50

    Makefile经典教程(掌握这些足够)

    我们在UNIX下可能会使用不同的Shell,但是make的命令默认是被“/bin/sh”——UNIX的标准Shell解释执行的。除非你特别指定一个其它的Shell。...还有一个在“嵌套执行”中比较有用的参数,“-w”或是“--print-directory”会在make的过程中输出一些信息,让你看到目前的工作目录。...这就是说,shell函数把执行操作系统命令后的输出作为函数 返回。...特别是Makefile的隐晦的规则可能会让你的shell函数执行的次数比你想像的多得多。 九、控制make的函数 make提供了一些函数来控制make的运行。....> ) 这个函数很像error函数,只是它并不会让make退出,只是输出一段警告信息,而make继续执行。

    2.8K20

    Linux Make(Makefile)由浅入深的学习与示例剖析

    make执行时,自动寻找makefile(Makefile)文件,然后执行编译工作。因此,我们需要自己编写makefile文件(Makefile与makefile都可以直接被make命令识别,下同。...其次,需要注意Linux makefile(Makefile)文件的编写规范和方法: 1、需要由make工具创建目标体target,即通常的目标文件或可执行文件 2、声明并给出创建的目标体所依赖的文件(...生成规则目标所需要的文件名列表,通常是一个目标依赖于一个或多个文件。 command:规则的命令。make程序所执行的的动作,可以为shell命令或者在shell下执行的程序。...*.o 目标文件和main可执行文件 在shell命令行执行make命令 ?...2、在命令行中出现的Shell变量,引用Shell的 $tmp 格式,一般为执行命令过程中的临时变量,不属于makefile变量,而是Shell变量。

    1.8K20

    Shell脚本的简单排错法及调试程序bashdb

    Jboss 的研究稍有卡壳,那就来点基础教程好了。 与众多脚本语言一样,Shell 脚本在执行时出错是很常见的,最简单的原因无外乎脚本在编写的过程中出现了语法错误或者不小心输错了命令等。...找出脚本中的错误是很重要的能力。.../configure make && make install 安装完成后,我们便可以在终端使用 bashdb 命令了,改命令典型用法如下: [root@localhost ~]# bashdb --debug...空格Shell命令 参数 执行shell命令 使用bashdb进行debug的常用命令(cont.)...三、控制脚本执行类: n   执行下一条语句,遇到函数,不进入函数里面执行,将函数当作黑盒 s n 单步执行n次,遇到函数进入函数里面 b   行号n 在行号n处设置断点 del 行号n 撤销行号n处的断点

    1.4K71

    Make 快速入门

    Makefile 在使用 make 之前,你必须在当前目录下添加一个 Makefile 文件,它描述了文件之间的依赖(输入输出)关系,并提供更新文件的 Shell 命令。...既可以出现在目标,先决条件,也可以出现在“菜谱”的 shell 命令中;可以是命令本身,也可以是命令的选项,或者输入输出文件;甚至也可以出现在另一个变量的引用中(计算变量)。...函数 make 中的函数用于处理 Makefile 文件中的文本,例如:计算操作的文件列表,“菜谱”中使用的命令等。 4.1 函数调用 函数调用类似于变量引用,它可以出现在任何变量引用可以出现的地方。...4.2 用于字符串替换和分析的函数 4.2.1 $(subst from,to,text) 在 text 上执行文本替换,将出现的所有 from 替换成 to 。...: GNU make

    1.5K10

    【makefile】

    7、执行生成命令。 1-5步为第一个阶段,6-7为第二个阶段。第一个阶段中,如果定义的变量被使用了,那么,make会把其展开在使用的位置。...但make并不会完全马上展开,make使用的是拖延战术,如果变量出现在依赖关系的规则中,那么仅当这条依赖被决定要使用了,变量才会在其内部展开。...在模式规则中,如果有多个目标,那么," $@ " 就是匹配于目标中模式定义的集合。 $% ——仅当目标是函数库文件中,表示规则中的目标成员名。...CO 从 RCS文件中扩展文件程序。默认命令是“co”。 CPP C程序的预处理器(输出是标准输出设备)。默认命令是“$(CC) –E”。...2.4 Makefile中的函数 在Makefile中可以使用函数来处理变量,从而让命令或规则更为的灵活和具有智能,函数调用,很像变量的使用,也是以“$”来标识的,函数调用后,函数的返回值可以当做变量来使用

    2K00

    Makefile 使用总结

    这个特性是GNU make的,很有可能不兼容于其它版本的make,所以,你应该尽量避免使用"$*",除非是在隐含规则或是静态模式中。...这是GNU make中老版本的特性,在新版本中,我们使用函数"dir"或"notdir"就可以做到了。"D"的含义就是Directory,就是目录,"F"的含义就是File,就是文件。...中书写shell命令时可以加2种前缀 @ 和 -, 或者不用前缀. 3种格式的shell命令区别如下: 不用前缀 :: 输出执行的命令以及命令执行的结果, 出错的话停止执行 前缀 @   :: 只输出命令执行的结果...>) 它的作用就是执行一个shell命令, 并将shell命令的结果作为函数的返回....作用和 `shell command>` 一样, ` 是反引号 3.4.8 make 控制函数 产生一个致命错误: $(error ) 功能: 输出错误信息, 停止Makefile

    3.6K30

    读书笔记04-可重复工作执行简明指南(中)

    虽然我们在上一节中[[02-可重复工作执行简明指南(上)]] 提到脚本,通过直接执行脚本,可以方便我们调用命令;可是,我们的最小单位并不是一个脚本,而是由多个脚本构成。...目前从我的了解来看,其有两个天然的优点: 直接在shell 下执行命令,可以更好的操作系统与文件; 相当于是脚本的一个管理器,直接操作脚本为代码,控制输入与输出; makefile 用远不会重复,如果你的脚本发生了改变...除了可以使你的代码更加美观,减少不必要的重复之外,这样做也可以让你带着更加多的考虑去编写你的代码,它的目的是为了完成什么?这样做的好处是你的函数很多时候在不同的场景下大体上是可以被反复使用的。...Script # 用于非绘图以外的各种脚本 通常来说,在Script 中我会保存所有的不同步骤对应的全部代码。...接下来,在一个Rmd 文件下,source 那些非绘图以外的各种脚本,并只专注于内容的输出即可。 彩蛋 新年快乐哦各位。

    31320

    Makefile函数

    在Makefile中可以使用函数来处理文本,从而让我们的命令或是规则更为灵活和智能。make所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量来使用。...通常,它们用于向生成文件的用户提供信息,或者在检测到某种环境错误时使make停止。 4.1 info 原型: $(info ) 作用:向标准输出打印文本,用于输出调试信息。...5.3 eval 原型: $(eval ) 功能:eval 函数是一个比较特殊的函数,其将作为 makefile 的一部分而被 make 解析执行。...注意:该函数在执行时会对它的参数进行两次展开,第一次展开是由 eval 函数本身完成,第二次是函数展开后的结果被作为 makefile 内容时由 make 解析时展开。...顾名思义,它的参数是操作系统的Shell命令,shell函数把执行Shell命令后的输出作为函数返回。 示例: $(shell cat foo) 返回 foo。

    2.4K41

    linux驱动开发之Hello程序

    linux驱动开发之Hello程序 0.说在前面 1.HelloWord 驱动模块组成 驱动模块组成 头文件(必选) 模块参数(可选) 模块功能函数(可选) 其他(可选) 模块加载函数(必选) 模块卸载函数...BSD/GPL"); //BSD/GPL双重许可权 MODULE_LICENSE("Dual MPL/GPL"); //MPL/GPL双重许可权 MODULE_LICENSE("GPL"); //任一版本的GNU...= /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) # 否则,是直接从命令行调用的, # 这时要调用内核构造系统 modules...) -C $(KERNELDIR) M=$(PWD) modules make的语法是Make -C 内核路径 M=模块路径 modules,该语句会执行内核模块的编译!...3.编译输出 命令执行 由于printk输出直接在message中,而不是终端直接输出,得查看信息,通过下面图片中命令查看!??

    2.6K20

    Linux 开发 | 学习 Makefile

    @(linux 编程)[开发技能, 工具使用] What is GNU Make Make 是控制工程中通过源码生成可执行文件和其他相关文件的工具。...name.xxxx (在Makefile中 $ 有特殊含义,如果要表示它的字面意思需要写两个 $,所以 Makefile 中的四个 $ 传给Shell变成两个 $,而两个 $ 在Shell中表示当前进程的...命令回响 在 Makefile 中执行如下命令, echo 命令执行 终端会输出如下 : echo 命令执行 命令执行 第一行是执行的命令完整打印(回响),第二行才是我们需要的输出的,关闭命令回响的方法是在该行命令前添加...override 指示符 如果在运行 Make 的时候在命令参数设置了变量,则 Makefile 对变量的设置默认被忽略,如果不想被忽略,可以使用override。...Makefile 中除了命令区域,是不能直接执行 shell 命令,但是可以通过 shell 函数执行,调用该函数,会生成一个新的程序,所以需要注意效率问题。

    5.4K10

    Linux gdb使用基础

    GDB简介 GDB(GNU Debugger)是Linux下一款C/C++程序调试工具,通过在命令行中执行相应的命令实现程序的调试,使用GDB时只需要在shell中输入gdb命令或gdb filename...jump j 跳转执行 signal - 产生信号量 return - 强制函数返回 call - 强制调用函数 make - 不退出gdb下重新产生可执行文件 shell <.../gdbtest result=55 程序在本电脑上运行正确,但是,该程序是存在问题的,add()函数中的sum变量应该赋初值0,否则在其它电脑上运行,如果该变量被初始化了随机数,则会计算出错误的结果。...:6 #1 0x000055555555468a in main () at gdbtest.c:14 (gdb) 可以看出函数add()被主函数调用,主函数传入的start和end参数值。...0,主函数中的局部变量result也被初始化为0。

    2.4K10

    Autoconf简介「建议收藏」

    参数中的任何前导空格和新的行都会被忽视,除非被引用。 详细引用规则 当在宏参中使用相同的文本时,必须有一个额外的引用级别,并且对重复的部分或者整体进行双重的符号引用。...已经在文本中引用了AC_DC:[echo "Hard rock was here!...描述不能被引用两次。 注释以#开头 note:引用变量:如果是宏赋值的变量,则可直接xxx,如果是shell变量则需要{xxx}。..., or #ifndef出现在执行文件中的标识符排序列表 使用autoconf创建configure 无参运行autoconf从configure.ac创建configure。...如果加了参数,那么它从那个文件中读取并输出配置脚本到标准输出;如果加了参数-,它从标准输读取然后输出到标准输出。 Autoconf宏被定义在多个文件里面。

    2K20

    Linux shell 程序设计1——安装及入门

    2、shell的安装: 在ftp.gnu.org/gnu/bash可下载到bash的源码包: bash-4.1.tar.gz 用 tar xzvf bash-4.1.tar.gz 解压,生成bash-4.1...在/etc/shells文件中列出的shell才是合法的shell,所以要使用安装的shell必须把它加到该文件中。加入之后就可以通过chsh命令来切换shell。...15 exit 16 fi 17 /*调用上面定义的函数*/ 18 show "$date" "$name" "$ip" 19 20 sleep 5 21 echo //.../脚本名 参数 或 source 脚本名 参数 以这种方式执行的shell脚本,bash不会创建子shell,而是在自己的环境中执行,执行完成后,若脚本中有修改环境的地方,则bash的环境就会改变...在执行一个新的shell时,若执行的是交互式shell,或者叫做命令,bash会检查并执行/etc/bash.bashrc以及家目录中的.bashrc。

    1.4K60

    Makefile基本用法

    来源 https://www.gnu.org/software/make/manual/make.pdf 简单的例子 其中的cc通过链接,间接指向/usr/bin/gcc。...名为GUNmakefile和Makefile的文件同时存在,则使用前者。 调用方法过程中,若前者不存在,则如下脚本给出了如何寻找后者是否存在所需要调用的方法,然后执行。...管道命令 对要调用的规则施加特定的顺序,而不必强制更新目标,使用管道命令。 当执行此条规则,则首先需要执行先决条件的规则。然而当先决条件存在,不论是否被更改,都属于满足条件。...当一个先决条件的名称的格式为'-lname'时,make通过搜索文件来专门处理它libname.so文件 如果找不到,则在当前目录中的libname.a文件中 在通过匹配vpath搜索路径和vpath搜索路径指定的目录中....ONESHELL .ONESHELL定义后,在构建一个目标时,方法的所有行都将被赋予shell的一次调用,而不是单独调用每一行。

    2.5K40

    awk学习笔记

    事实上,gawk有自己的语言,其本身就 相当于一个解释器,允许用户创建简短的程序读取输入文件,对输入数据执行排序、计算以及生成报表操作,甚至可以类似bash shell实现诸如循环、数组、条件判断、函数...//awk使用中,需要处理的文件,逐行使用分隔符分割成若干个字段,称之为域,分隔符默认是空格,可使用-F选项来指定分隔符 2、shell脚本模式 将所需执行的awk命令插入...5、空模式 如果不指定模式则匹配文件中的所有行 awk重定向 1、输出重定向 awk可以使用shell的重定向符重定向输出,同样>代表覆盖式输出,>>...getine函数读取date命令输出的结果并赋值给自定义变量d,split函数将变量d转化为数组mon,然后打印数组mon的第三个元素。...由于本人水平有限,awk的使用先总结到这里吧,在以后的使用中再深入研究。

    1.9K60

    RT-thread finsh移植到linux平台

    FinSH介绍 整体来说,FinSH就是一个shell,通过嵌入到程序中, 将程序内部的符号(函数,变量)暴露出来,使得用户可以在程序运行后, 很轻易的通过命令行调用程序内部函数,变量,相比于使用gdb...C 语言解释器模式下,FinSH 能够解析执行大部分 C 语言的表达式,并使用类似 C 语言的函数调用方式访问系统中的函数及全局变量,此外它也能够通过命令行方式创建变量。...在该模式下,输入的命令必须类似 C 语言中的函数调用方式,即必须携带 () 符号,例如,要输出系统当前所有线程及其状态,在 FinSH 中输入 list_thread() 即可打印出需要的信息。...FinSH 命令的输出为此函数的返回值。对于一些不存在返回值的函数(void 返回值),这个打印输出没有意义。...,还在纠结于module_init()定义的入口函数是怎么被调用起来的同学,也可以继续往下看。

    3.3K10
    领券