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币余额
我的收藏
我的下载
下载帮助


最新资源
- 基于蒙特卡洛模拟与半不变量法的电力系统概率潮流计算程序:考虑光伏不确定性,分析IEEE34节点系统电压与潮流概率特性 ,电力系统随机潮流计算MATLAB程序包含蒙特卡洛模拟法与半不变量法,在光伏不确定
- mysql-installer-community-8.0.18.0.msi
- 深度学习驱动的电动车头盔佩戴检测系统:完整源码与数据集的集成解决方案,深度学习驱动的电动车头盔佩戴检测系统:完整源码与数据集的集成解决方案,基于深度学习YOLOv8+Pyqt5的电动车头盔佩戴检测系统
- IMDb 韩国电视剧及用户评论数据集.zip
- 无功补偿仿真实例: 使用Simulink与MATLAB仿真无功补偿SVG,附有详细文档,基于Simulink与Matlab的无功补偿SVG仿真研究-完整仿真过程与说明文档,无功补偿仿真,simuli
- C++实现扩展卡尔曼滤波器估计移动物体的位置和速度源码+使用教程(自动驾驶汽车项目).zip
- 軟體比對參考腳本,輸出電腦中的軟件和系統信息
- 基于DH参数的UR5机械臂PID轨迹跟踪控制及Simscape物理仿真:角度、速度、加速度与力矩分析,误差曲线展示,UR5机械臂PID轨迹跟踪控制技术:六自由度Simscape物理仿真与DH参数分析的
- 基于卡尔曼滤波跟踪自由落体的速度matlab源码实现-高度曲线(课程作业).zip
- 最佳阿尔茨海默氏症MRI数据集(99%准确率).zip
- E000704金融股权投资类企业网站模板+PHP+Mysql+易优+CMS+建站模板
- 将 Linux 系统配置成为一台 IPv4 路由器 具备 RIP、OSPF(单区域)和路由重分配功能
- 中国地图GeoJSON
- 自动生成爱心,让你的三八节表达爱意有乐趣
- 1737773274623_ NOUV1WnbhDPACrd11NUVOb14GN4+AF+wJggYPBDWg.jpg
- 让你的三八节表达爱意有乐趣,自动生成会动的爱心


