跟耗子一起学makefile

本文详细介绍了makefile的各个核心概念,从基础的make简介到复杂的规则、函数和自动化变量,逐步解析makefile的编写与运用。同时,提到了CMake入门实战链接以及makefile的常用技巧,如依赖文件检测、命令显示、错误处理和变量使用等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

makefile(一):make简介

makefile(二) :make如何工作、变量使用、make自动推导

makefile(三):makefile5大组成、引用其他文件、环境变量、工作方式。

makefile(四):make规则书写、文件搜寻、伪目标

makefile(五):多目标、静态模式、自动生成依赖性

makefile(六):书写命令、嵌套make、定义命令包

makefile(七):变量、override指示符

makefile(八):多行、环境、目标模式变量、使用条件判断

makefile(九):函数、字符串处理函数、文件名操作函数

makefile(十):foreach函数、if函数、call函数、orignal函数、shell函数、控制make函数

makefile(十一):make的运行。(退出码、指定makefile文件)、检查规则、make参数

makefile(十二):隐含规则

makefile(十三):模式规则、自动化变量、老式后缀规则

makefile(十四):函数库


另外,CMake入门实战:http://www.hahack.com/codes/cmake/


makefile的一些常用易忘点(针对自己吧)

1、make -M/-MM(-M会把标准库所依赖的头文件也包含进来 : 可以把目标所依赖的文件列出来。

eg

gcc -MM main.c的输出则是:(显示其依赖系)
main.o: main.c defs.h

2、make -n/ --just-print (显示执行的命令,但是不执行)

3、 如果你要让上一条命令的结果应用在下一条命令时,你应该使用分号分隔这两条命令。比如你的第一条命令是cd命令,你希望第二条命令得在cd之后的基础上运行,那么你就不能把这两条命令写在两行上,而应该把这两条命令写在一行上,用分号分隔。如:(记住命令要tab开头

  示例一:
        exec:
           cd /home/hchen
           pwd
 示例二:
        exec:
           cd /home/hchen; pwd

4、如果要指定特定的Makefile,你可以使用make“-f”“--file”参数,如:make-f Make.Linuxmake--file Make.AIX

5、makefile默认执行会在出错的命令停止。可以手动设置忽略。在对应命令行加上-

-mkdir file1.

6、如果你要传递所有的变量(到下级),那么,只要一个export就行了。后面什么也不用跟,表示传递所有的变量。

7、变量在声明时需要给予初值,而在使用时,需要给在变量名前加上“$”符号,但最好用小括号()或是大括号“{}”把变量给包括起来。如果你要使用真实的“$”字符,那么你需要用“$$”来表示。

8、高级:变量替换

foo := a.o b.o c.o
    bar := $(foo:.o=.c)

这个示例中,我们先定义了一个“$(foo)”变量,而第二行的意思是把“$(foo)”中所有以“.o”字串“结尾”全部替换成“.c”,所以我们的“$(bar)”的值就是“a.c b.c c.c”。

9、编译自动加载默认变量

隐含规则会使用一些我们系统变量,我们可以改变这些系统变量的值来定制隐含规则的运行时的参数。如系统变量“CFLAGS”可以控制编译时的编译器参数。










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值