Makefile各类符号
来源:互联网 发布:手游存档软件 编辑:程序博客网 时间:2024/06/09 15:23
makefile总规则:欲更新目标,必须首先更新它的所有条件;
命令列表中的每条命令必须以一个Tab开头,注意不能是空格,Makefile的格式不像C语言的缩进那么随意,对于Makefile中的每个以Tab开头的命令,make会创建一个Shell进程去执行它,
在大型项目中gcc的-M选项自动生成目标文件和源文件的依赖关系
冒号表示,
main: main.o stack.o maze.o #目标:条件
gcc main.o stack.o maze.o -o main #执行的命令
main.o: main.c main.h stack.h maze.h
gcc -c main.c
stack.o: stack.c stack.h main.h
gcc -c stack.c
maze.o: maze.c maze.h main.h
gcc -c maze.c
红色部分是makefile 的理念,很重要:
执行makefile的时候会尝试更新makefile的第一条规则,第一条规则的目标称为缺省目标,只要缺省目标更新了就算完成任务,而要更新缺省目标,需要先更新缺省目标的条件。所以总结的一点就是,makefile类似堆栈,由下而上的执行makefile。
重新编译的时候只编译受影响的文件。
执行makefile重新编译的时候,仍然尝试更新缺省目标,继而取更新目标的条件目标,重新编译的条件是被修改的文件的修改时间若是最新的,则需要重新编译相关联的文件,这样受影响的目标条件被更新了,那么缺省目标也也就需要重新编译。即,以下情况下要更新
makefile的命名规则
执行make命令时,是按照GNUmakefile、makefile、Makefile的顺序找到第一个存在的文件并执行它,不过还是建议使用Makefile做文件名。除了GNU make,有些UNIX系统的make命令不
是GNU make,不会查找GNUmakefile这个文件名,如果你写的Makefile包含GNU make的特殊语法,可以起名为GNUmakefile,否则不建议用这个文件名。
@,%,^,<,-,$()等符号的说明
@:
如果执行命令前加上它,则只显示命令结果,不显示命令本身
-:
通常makefile里的命令执行出错(该命令的退出状态非0),就立刻终止makefle的执行。但是在命令前加上’-‘,即便命令出错makefile还会执行。通常rm命令和mkdir命令前面要加-号。
.phony 关键字
在目标前添加它,表示该目标是虚假目标,即伪目标。不管它的目标文件存在不存在都要更新,即需要执行,想clean一样
$()
在makefile中使用$()获取makefile中定义的变量的值,如果变量没有定义其值为空,这样可以很好的控制编译时的参数。
$@
$@获取规则中的目标,规则实例:main.o:main.cq其中main.o是目标main.c是条件且是第一个条件
$<
$<获取规则中的第一个条件
$?
$?,表示规则中所有比目标新的条件,组成一个列表,以空格分隔。
$^
$^,表示规则中的所有条件,组成一个列表,以空格分隔。
%
%是替换字符,表示1个或者多个字符,实例:%.o:%.c这个实例称之为模式规则也是makefile的隐含规则
:= = ?= +=
:=表示立即展开,即立即进行赋值;=表示延迟展开,即若当前没有定义该变量,会需找定义再展开;?=表示如foo ?=
一个变量的定义从=后面的第一个非空白字符开始(从
nullstring := (回车)
- Makefile各类符号
- 各类符号的英文读法
- UML图各类符号含义
- UML图各类符号含义
- Makefile符号说明
- Makefile符号说明
- Makefile 中的 $@, $^, $< 符号
- Makefile中的+/- 符号
- Shell Makefile 中的符号
- makefile中符号含义
- makefile符号释疑
- makefile 之符号区别
- Makefile符号说明
- makefile中一些符号
- Makefile 中的 $@, $^, $< , $? 符号
- makefile 规则符号
- Makefile中的符号说明
- Makefile 中的 $@, $^, $< , $? 符号
- JSP 文件上传
- OC 触摸事件
- 扣丁学堂——ActionBar
- python中的多线程
- 【学习笔记】自定义关于wchar_t*的相关函数
- Makefile各类符号
- 动画气泡指示当前滑动值--第三方开源--DiscreteSeekbar
- 服务器启动时Webapp的web.xml中配置的加载顺序
- 基本套接字编程(3) -- select篇
- mybatis 加二级缓存
- win7安装express
- spring 无法读取properties中的值
- leetcode -- Maximal Rectangle -- 重点
- MySQL数据库基础学习(SQL语句)