ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### make是什么? 官方对make的解释如下:GNU Make is a tool which controls the generation of executables and other non-source files of a program from the program's source files. make是一个能控制可执行程序和非源文件的生成的工具。 ### 如何使用make? 为了使用make工具,我们需要编写makefile文件,当我们在某个路径下运行`make`命令时,工具会自动寻找该路径下名为makefile的配置文件进行解析。 ### makefile文件的主要内容 makefile的主要内容定义了文件之间的依赖关系,以及一些文件如何生成。 举个例子,在如下makefile文件中 ~~~makefile hvite: hvite.cpp lib.cpp lib.h g++ -o hvite hvite.cpp lib.cpp ~~~ 这个makefile文件的作用时利用`hvite.cpp`、`lib.cpp`、`lib.h`来生成可执行文件`hvite`。 第一行表明了一个依赖关系,即hvite必须在后面的三个文件都准备好之后再生成,而下面的一行给出了如何生成hvite文件。当我们改动了依赖文件时,例如修改了`hvite.cpp`时,因为`hvite.cpp`这个依赖文件的时间戳要比已经生成的`hvite`的时间戳新,所以再次执行`make`命令时,就是用下面的命令重新生成`hvite`。 或者我们可以这样表示`make`的行为:当运行`make`命令时,`make`工具检查makefile文件中所有的目标文件,当目标文件的时间戳比任意一个依赖文件要旧或者目标文件不存在时,运行其下的命令(这些命令可以是任意的shell命令)重新生成目标文件。 ### make的作用 我们可以认为`make`工具是根据makefile文件中的依赖控制建立了一张图,图中的每个目标节点附带了一组操做,当目标节点的时间戳比任意前驱结点的时间戳小时,用该节点上的操做更新该节点,直到图中不存在这样的节点。显然只要层序遍历文件依赖图就可以完成`make`的工作。