郑州软件网站建设,网站维护哪些,网站运营优化推广,网页文件的扩展名Makefile
什么是make#xff1f; make 是个命令#xff0c;是个可执行程序#xff0c;用来解析 Makefile 文件的命令这个命令存放在 /usr/bin/ 什么是 makefile? makefile 是个文件#xff0c;这个文件中描述了我们程序的编译规则咱们执行 make 命令的时候#xff0c; m…Makefile
什么是make make 是个命令是个可执行程序用来解析 Makefile 文件的命令这个命令存放在 /usr/bin/ 什么是 makefile? makefile 是个文件这个文件中描述了我们程序的编译规则咱们执行 make 命令的时候 make 命令会在当前目录下找 makefile 文件根据 makefile 文件里的规则编译程序。 注意 Makefile 规则文件是程序员根据自己的程序编写的编译规则采用 Makefile 的好处 简化编译程序的时候输入的命令编译的时候只需要敲 make 命令就可以了可以节省编译时间提高编译效率
1. make概述
① GNU make 是一种代码维护工具
② make 工具会 根据 makefile 文件定义的规则和步骤完成整个软件项目的代码维护工作
③ 一般用来简化编译工作可以极大地提高软件开发的效率
④ windows 下一般由集成开发环境自动生成
⑤ linux 下需要由我们按照其语法自己编写
1.1 检查是否有 make命令
命令检查版本
make --version1.2 make 和 Makefile的区别
make 是个命令是个可执行程序用来解析 Makefile 文件的命令
makefile 是个文件这个文件中描述了项目资源的编译规则。2. makefile
2.1 优点
管理我们的源文件会检查每个源文件是否被修改 再次只会编译修改过的源文件提高编译效率
2.2 语法及使用
语法
[变量名 变量值]
[...]
目标1:依赖文件列表
tab编译命令1
tab编译命令2目标2:依赖文件列表
tab编译命令1
tab编译命令2目标3:依赖文件列表
tab编译命令1
tab编译命令2
...解释 1、目标通常是要产生的文件名称目标可以是可执行文件或其它 obj 文件也可是一个动作的名称 2、依赖文件是用来输入从而产生目标的文件一个目标通常有几个依赖文件可以没有 3、命令make 执行的动作一个规则可以含几个命令可以没有有多个命令时每个命令占一行 例
main:main.cgcc main.c -o main
clear:rm main解释其中 main 就是目标main.c 就是依赖文件gcc main.c -o main 就是命令。 注意 当目标后面没有依赖文件我们就将其称为假象目标 使用 在控制台输入 make 命令 注意 make 默认在工作目录中寻找名为 GNUmakefile、makefile、Makefile 的文件作为 makefile 输入文件-f 可以指定以上名字以外的文件作为 makefile 输入文件若使用 make 命令时没有指定目标则 make 工具默认会实现 makefile 文件内的第一个目标然后退出。 例在控制台输入
1,输入make,默认执行makefile文件中第一个目标中命令
2,输入make 目标,执行makefile文件中指定的目标中的命令
3,当makefile的文件名不是GNUmakefile、makefile、Makefile时,可以输入make -f 文件名,指定makefile文件再次执行只会编译修改过的文件 各文件如下 通过命令行运行多个文件 步骤 步骤1编写makefile文件如下 main:main.o myutils.ogcc main.o myutils.o -o main
clear:rm main *.o步骤2执行make命令查看如下 步骤3修改main.c文件在次执行make命令 2.3 变量
2.3.1 分类
系统变量
由系统提供的变量make工具会拷贝系统的环境变量并将其设置为 makefile 的变量在 makefile中可直接读取或修改拷贝后的变量。
查看系统变量命令:env
修改或添加系统变量export 变量名值注意export是导入的意思注意: 只是临时修改,当dos关闭后,将不在存在如makefile编写如下 main:main.o myutils.ogcc main.o myutils.o -o main
clear:rm main *.o
myprint:echo ${PWD}自定义变量(重点) 程序员在编写makefile文件中自定义的变量 预定义变量(重点) make命令提供的变量
2.3.2 自定义变量
语法
定义变量:变量名变量值
引用变量:$(变量名)或${变量名}注意 1、makefile 的变量名makefile 变量名可以以数字开头 2、变量是大小写敏感的 3、变量一般都在 makefile 的头部定义 4、变量几乎可在 makefile 的任何地方使用 例
EXEc main
OBJ main.o utils.o
FLAGS -Wall -g
cc gcc$(EXEc):$(OBJ)$(cc) $(OBJ) -o $(EXEc) $(-Wall -g)
main.o:main.c$(cc) -c main.c -o main.o
utils.o:utils.c$(cc) -c utils.c -o utils.o
clear:rm $(EXEc) *.o引用变量定义的变量 在下面用 $() 或 ${} 替换-Wall -g忽略所有警告 2.3.3 预定义变量
makefile 中有许多预定义变量这些变量具有特殊的含义可在 makefile 中直接使用。$ 目标名$ 依赖文件列表中的第一个文件$^ 依赖文件列表中除去重复文件的部分以下为了解AR 归档维护程序的程序名默认值为 arARFLAGS 归档维护程序的选项AS 汇编程序的名称默认值为 asASFLAGS 汇编程序的选项cc c 编译器的名称默认值为 gcccFLAGS c 编译器的选项cPP c 预编译器的名称默认值为$(cc) -EcPPFLAGS c 预编译的选项cXX c编译器的名称默认值为 gcXXFLAGS c编译器的选项如
EXEc main
OBJ main.o utils.o
FLAGS -Wall -g
cc gcc$(EXEc):$(OBJ)$(cc) $^ -o $ $(-Wall -g)
#%:统配符
%.o:%.c$(cc) -c $ -o $
clear:rm $(EXEc) *.o