makefile详解 使用变量和函数
Makefile详解 使用变量和函数 makefile 是一种自动化build工具,它可以根据依赖关系自动编译和链接源代码。在 Makefile 中,我们可以使用变量和函数来简化编译过程和提高效率。 变量是 Makefile 中的一个重要概念,它可以被认为是一种宏,代表着一个文本字符串。在 Makefile 中定义的变量可以被用于目标、依赖目标、命令或 Makefile 的其他部分中。变量的命名字可以包含字符、数字和下划线,但不应该含有“:”、“#”、“=”或空字符。 在使用变量时,我们需要在变量名前加上“$”符号,以便 Makefile 可以正确地展开变量。但是,如果我们想使用真实的“$”字符,那么我们需要用“$$”来表示。 变量可以被用于许多地方,如规则中的目标、依赖目标、命令和新的变量中。例如,我们可以定义一个变量“objects”,它包含了多个目标文件,然后在规则中使用这个变量: ``` objects = program.o foo.o utils.o program : $(objects) cc -o program $(objects) ``` 在上面的例子中,我们定义了一个变量“objects”,它包含了多个目标文件,然后在规则中使用这个变量来编译程序。 在使用变量时,我们可以使用括号来包括变量,以便更好地使用这个变量。例如: ``` foo = c prog.o : prog.$(foo) $(foo)$(foo) -$(foo) prog.$(foo) ``` 在上面的例子中,我们定义了一个变量“foo”,然后在规则中使用这个变量来编译目标文件“prog.o”。 变量也可以被用于定义其他变量的值。在 Makefile 中,我们可以使用两种方式来在变量中使用其他变量来定义变量的值。 第一种方式是使用“=”号,在“=”左侧是变量,右侧是变量的值。例如: ``` foo = $(bar) bar = $(ugh) ugh = Huh? ``` 在上面的例子中,我们定义了三个变量“foo”、“bar”和“ugh”,然后在使用“foo”时,Makefile 会自动展开变量的值。 第二种方式是使用“:=”操作符,例如: ``` x := foo y := $(x) bar x := later ``` 在上面的例子中,我们定义了两个变量“x”和“y”,然后使用“:=”操作符来定义变量的值。 函数是 Makefile 中另一个重要的概念,它可以被认为是一种宏,代表着一个命令序列。在 Makefile 中,我们可以使用函数来简化编译过程和提高效率。例如: ``` define foo @echo "Hello, world!" endef ``` 在上面的例子中,我们定义了一个函数“foo”,它可以被用于输出“Hello, world!”。 在 Makefile 中,我们可以使用函数来简化编译过程和提高效率。例如: ``` objects = program.o foo.o utils.o program : $(objects) $(foo) $(objects) ``` 在上面的例子中,我们定义了一个函数“foo”,然后在规则中使用这个函数来编译程序。 Makefile 中的变量和函数是非常重要的概念,它们可以被用于简化编译过程和提高效率。但是,我们需要正确地使用变量和函数,以免出现错误和不良影响。
剩余21页未读,继续阅读
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 毕设和企业适用springboot社交应用平台类及智能会议管理平台源码+论文+视频.zip
- 毕设和企业适用springboot社交应用平台类及智慧交通调度平台源码+论文+视频.zip
- 毕设和企业适用springboot社交应用平台类及职业技能培训平台源码+论文+视频.zip
- 毕设和企业适用springboot商城类及广告效果评估平台源码+论文+视频.zip
- 毕设和企业适用springboot商城类及教育评价系统源码+论文+视频.zip
- 毕设和企业适用springboot商城类及环保监控平台源码+论文+视频.zip
- 毕设和企业适用springboot社交互动平台类及物流追踪系统源码+论文+视频.zip
- 毕设和企业适用springboot社交互动平台类及无人超市平台源码+论文+视频.zip
- 毕设和企业适用springboot社交互动平台类及物流管理平台源码+论文+视频.zip
- 毕设和企业适用springboot社交应用平台类及智能配送系统源码+论文+视频.zip
- 毕设和企业适用springboot商城类及企业财务管理系统源码+论文+视频.zip
- 毕设和企业适用springboot商城类及全球电商管理平台源码+论文+视频.zip
- 毕设和企业适用springboot商城类及企业IT解决方案平台源码+论文+视频.zip
- 毕设和企业适用springboot商城类及社交媒体平台源码+论文+视频.zip
- 毕设和企业适用springboot商城类及数据分析与监控平台源码+论文+视频.zip
- 毕设和企业适用springboot商城类及社会服务平台源码+论文+视频.zip