makefile
来源:互联网 发布:数学网络课程哪个好 编辑:程序博客网 时间:2024/05/18 09:04
1、编译 .c 生成 .o 高级语言生成可识别的机器指令,不能被执行
链接 将.o文件和库文件链接成可执行文件
库文件包括静态库和动态库。
静态库是多个.o文件的集合,链接时被加载,使用ar工具维护;
动态库也是多个.o文件的集合,又叫共享库,运行时被加载,多个进程共享其代码段,不共享数据段。
2、gcc -c :生成.o文件
3、使用 \ 来分行
4、makefile的处理规则
a/目标.o不存在,使用描述规则创建
b/目标.o的依赖.c比它新,使用描述规则重新创建
c/目标.o的依赖.c没它新,什么都不做
5、变量
声明:object=a.o b.o
使用:main:$(object)
= 递归展开式 可以展开后面定义的变量 (容易产生死循环)
:=直接展开式 不可以展开后面定义的变量 (推荐使用)
?=如果该变量未被定义则定义它,否则不执行任何操作
+=追加变量
6、隐含规则
.c生成.o的规则可以省去命令
main.o:main.c
7、伪命令
.PHONY:clean
clean:
rm .......
8、makefile第一个规则之后所有以[Tab]字符开始的行make将它交给shell处理
9、包含其他makefile
暂停读取当前makefile,先读取includemakefile
include Filenames... 文件不存在将报错
-include Filenames... 忽略文件不存在的影响
snclude Filenames... 兼容性更高
10、变量object=*.o object代表字符串*.o,而不是所有.o文件,因为它只是把字符串赋给了变量
可以使用wildcard函数来处理通配符
object=$(wildcard *.o)现在object等于所有的.o文件了
wildcard是通配符处理函数
11、条件判断语句
ifeq
ifneq
ifdef
ifndef
ifeq(var1,var2)
代码段
else
代码段
endif
12、make中当有逗号或空格作为参数时,需要把它们赋值给一个变量
13、一些文本处理函数
subset
格式:$(subset from,to,text)
字符串替换
patsubset
格式:$(patsubset pattern,replacement,text)
模式替换
14、函数
shell
call 调用自定义的函数
链接 将.o文件和库文件链接成可执行文件
库文件包括静态库和动态库。
静态库是多个.o文件的集合,链接时被加载,使用ar工具维护;
动态库也是多个.o文件的集合,又叫共享库,运行时被加载,多个进程共享其代码段,不共享数据段。
2、gcc -c :生成.o文件
3、使用 \ 来分行
4、makefile的处理规则
a/目标.o不存在,使用描述规则创建
b/目标.o的依赖.c比它新,使用描述规则重新创建
c/目标.o的依赖.c没它新,什么都不做
5、变量
声明:object=a.o b.o
使用:main:$(object)
= 递归展开式 可以展开后面定义的变量 (容易产生死循环)
:=直接展开式 不可以展开后面定义的变量 (推荐使用)
?=如果该变量未被定义则定义它,否则不执行任何操作
+=追加变量
6、隐含规则
.c生成.o的规则可以省去命令
main.o:main.c
7、伪命令
.PHONY:clean
clean:
rm .......
8、makefile第一个规则之后所有以[Tab]字符开始的行make将它交给shell处理
9、包含其他makefile
暂停读取当前makefile,先读取includemakefile
include Filenames... 文件不存在将报错
-include Filenames... 忽略文件不存在的影响
snclude Filenames... 兼容性更高
10、变量object=*.o object代表字符串*.o,而不是所有.o文件,因为它只是把字符串赋给了变量
可以使用wildcard函数来处理通配符
object=$(wildcard *.o)现在object等于所有的.o文件了
wildcard是通配符处理函数
11、条件判断语句
ifeq
ifneq
ifdef
ifndef
ifeq(var1,var2)
代码段
else
代码段
endif
12、make中当有逗号或空格作为参数时,需要把它们赋值给一个变量
13、一些文本处理函数
subset
格式:$(subset from,to,text)
字符串替换
patsubset
格式:$(patsubset pattern,replacement,text)
模式替换
14、函数
shell
call 调用自定义的函数
0 0
- Makefile
- Makefile
- makefile
- makefile
- makefile
- Makefile
- Makefile
- Makefile
- Makefile
- Makefile
- Makefile
- makefile
- Makefile
- makefile
- Makefile
- makefile
- makefile
- makefile
- 大数据时代的技术hive:hive介绍
- Linux磁盘扩容LVM
- tr命令详解
- Leetcode155: Insertion Sort List
- java8的时间处理
- makefile
- dbm和功率值的关系
- Handler Looper MessageQueue 深度总结
- 黑马程序员-OC学习日记2
- 软件的架构与模式之经典架构模式简介
- C++基础::函数、类、类型所在的头文件 && 接口的介绍
- URI、URL、URN介绍
- eas bos editUI 刷新方法 帮助类
- Symfony 路由