一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,也可以执行操作系统的命令。
1.Makefile基础
简单实例:
1 all: 2 @echo "hello world." 3 echo "nihao world."
加@符和不加@符输出不同,加@只显示结果,不加@会把命令和结果都显示。
输出结果:
hello world. echo "nihao world." nihao world.
目标:依赖
Tab 命令
目标:一般是指要编译的目标,也可以是一个动作;
依赖:指执行当前目标所要依赖的先项,包括其它目标,某个具体文件或库等,一个目标可以有多个依赖;
命令:该目标下要执行的具体命令,可以没有,也可以有多条,多条时,每条命令一行;
make常用选项
make [-f file] [options] [target] # make默认在当前目录中寻找GNU Makefile,makefile的文件作为make的输入文件。 -f 可以指定除上述文件名之外的文件作为输入文件; -v 显示版本号; -d Debug; -n 只输出命令,但并不执行,一般用来测试; -s 只执行命令,但不显示具体命令,此处可在命令中用@符抑制命令输出; -w 显示执行前、执行后的路径; -C dir 指定makefile所在的目录;
没有指定目标时,默认使用第一个目标;如果指定,则执行对应的命令。
1 all:test1 2 echo "hello world." 3 4 test1: 5 echo "nihao world."
all依赖于test1,所以test1先执行,all后执行。
执行结果:
nihao world. hello world.
2.GCC编译流程
[待补充]
3.变量
[待补充]
4.伪目标和模式匹配
[待补充]
5.运行流程
[待补充]
6.编译动态链接库
[待补充]
7.编译静态链接库
[待补充]
8.公共头文件
[待补充]
9.调用Shell命令
[待补充]
10.嵌套调用
[待补充]
11.条件判断
[待补充]
12.循环
[待补充]
13.自定义函数
[待补充]
14.make install的实现
[待补充]
标签:编译,补充,Makefile,编程,基础,echo,nihao,命令,world From: https://www.cnblogs.com/phoebus-ma/p/17198757.html