make and makefile
make and makefile
分析和构建大型工程必备的知识,分析大型工程的入口点,构建大型工程的工具
make是一个解释makefile中指令的命令工具,通过makefile能够实现自动化编译
makefile指定了整个工程的编译规则。把工程其按类型,功能模块分别放在若干个目录中,makefile定义一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,同时可以执行操作系统的命令进行更复杂的功能操作
makefile的规则
target ...:prerequisites ...
<tab> command
1.target也就是一个目标文件,可以是objectfile也可以是执行文件。还可以是一个标签(Label)
2.prerequisite是要生成那个target所需要的文件或目表。
3.command是make需要执行的命令(任意的shell命令)。
4.这是一个文件的依赖关系,target这一个或多个目标文件依赖于prerequisite中的文件,其生成规则定义在command中。说白点就是,prerequisite中如果有一个或多个文件比target文件要新的话,command所定义的命令就会被执行。这就是makefile的规则。也就是makefile中最核心的内容。
make的工作流程
1.make会在当前的目录下找名字叫“Makefile”或“makefile”的文件.
2.如果找不到,它会找文件中的第一个目标文件(target),并把这个文件作为最终的目标文件.
3.目标文件或是目标文件所依赖的文件修改时间要比此文件新,那么他会执行后面所定义的命令来生成这个文件。
4.如果目标文件所依赖的文件也存在,那么make会在当前文件中找目标为文件的依赖性,如果找到则再根据哪一个规则生成所依赖的文件
5.make会一层一层地去找文件的依赖关系,直到最终编译出第一个目标文件.
分析和构建大型工程必备的知识,分析大型工程的入口点,构建大型工程的工具
make是一个解释makefile中指令的命令工具,通过makefile能够实现自动化编译
makefile指定了整个工程的编译规则。把工程其按类型,功能模块分别放在若干个目录中,makefile定义一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,同时可以执行操作系统的命令进行更复杂的功能操作
makefile的规则
target ...:prerequisites ...
<tab> command
1.target也就是一个目标文件,可以是objectfile也可以是执行文件。还可以是一个标签(Label)
2.prerequisite是要生成那个target所需要的文件或目表。
3.command是make需要执行的命令(任意的shell命令)。
4.这是一个文件的依赖关系,target这一个或多个目标文件依赖于prerequisite中的文件,其生成规则定义在command中。说白点就是,prerequisite中如果有一个或多个文件比target文件要新的话,command所定义的命令就会被执行。这就是makefile的规则。也就是makefile中最核心的内容。
make的工作流程
1.make会在当前的目录下找名字叫“Makefile”或“makefile”的文件.
2.如果找不到,它会找文件中的第一个目标文件(target),并把这个文件作为最终的目标文件.
3.目标文件或是目标文件所依赖的文件修改时间要比此文件新,那么他会执行后面所定义的命令来生成这个文件。
4.如果目标文件所依赖的文件也存在,那么make会在当前文件中找目标为文件的依赖性,如果找到则再根据哪一个规则生成所依赖的文件
5.make会一层一层地去找文件的依赖关系,直到最终编译出第一个目标文件.