定义命令包

简介: 定义命令包 如果Makefile中出现一些相同命令序列,那么我们可以为这些相同的命令序列定义一个变量。定义这种命令序列的语法以“define”开始,以“endef”结束,如: define run-yacc yacc $(firstword $^) mv y.tab.c $@ endef 这里,“run-yacc”是这个命令包的名字,其不要和Makefile中的变量重名。

定义命令包

如果Makefile中出现一些相同命令序列,那么我们可以为这些相同的命令序列定义一个变量。定义这种命令序列的语法以“define”开始,以“endef”结束,如:

define run-yacc

yacc $(firstword $^)

mv y.tab.c $@

endef

这里,“run-yacc”是这个命令包的名字,其不要和Makefile中的变量重名。在“define”“endef”中的两行就是命令序列。这个命令包中的第一个命令是运行Yacc程序,因为Yacc程序总是生成“y.tab.c”的文件,所以第二行的命令就是把这个文件改改名字。还是把这个命令包放到一个示例中来看看吧。

foo.c : foo.y

$(run-yacc)

我们可以看见,要使用这个命令包,我们就好像使用变量一样。在这个命令包的使用中,命令包“run-yacc”中的“$^”就是“foo.y”“$@”就是“foo.c”(有关这种以“$”开头的特殊变量,我们会在后面介绍),make在执行命令包时,命令包中的每个命令会被依次独立执行。

原文

http://wiki.ubuntu.org.cn/index.php?title=%E8%B7%9F%E6%88%91%E4%B8%80%E8%B5%B7%E5%86%99Makefile:%E4%B9%A6%E5%86%99%E5%91%BD%E4%BB%A4&variant=zh-hant

目录
相关文章
|
2月前
|
Go
GoLand软件包 home 包含多个 main 函数 请考虑改用文件种类
GoLand软件包 home 包含多个 main 函数 请考虑改用文件种类
32 0
GoLand软件包 home 包含多个 main 函数 请考虑改用文件种类
|
2月前
|
JavaScript 中间件
包代码
包代码
29 7
|
3月前
|
开发者 Python
|
11月前
|
SQL Java API
包的使用及其创建
包的使用及其创建
58 0
|
3月前
|
Python
python安装包(模块)的八种方法
python安装包(模块)的八种方法
116 2
|
8月前
|
Python
python的模块,包和目录的区别和自定义包的注意点
先插入模块/包是怎么找的 先找当前的包找有没有,没有去安装目录的内置函数中,再没有看看你设置的系统环境变量有没有 一般情况,代码添加的环境变量只存在当前窗口,关闭就没了-
91 0
|
12月前
|
存储 Python
python--导入,模块的引用,包,__name__
python--导入,模块的引用,包,__name__
|
JSON 数据格式 Python
24.从入门到精通:__name__属性 dir() 函数 标准模块 包 从一个包中导入*
24.从入门到精通:__name__属性 dir() 函数 标准模块 包 从一个包中导入*
|
机器学习/深度学习 算法 C++
python无法导入自定义的包:未解析的引用“Node“
python无法导入自定义的包:未解析的引用“Node“
python无法导入自定义的包:未解析的引用“Node“
|
C语言 Windows
子模块和包
子模块和包
74 0