首页
学习
活动
专区
工具
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.2K20

Autoconf 详解

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

3.5K50

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

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

2.6K20

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

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

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.3K71

【makefile】

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

1.9K00

Makefile 使用总结

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

3.5K30

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

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

29420

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.3K41

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.3K60

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 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.3K10

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.3K10

Autoconf简介「建议收藏」

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

2K20

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.2K10
领券