Linux中的自动化构建——make/Makefile
如果想构建大工程项目Makefile是不可或缺的。因为文件编译等工作我们手动来处理费时费力我们需要写Makefile来自动化处理make是一条指令Makefile是一个文件它们两者搭配使用就可以实现自动化构建Makefile大体结构就是依赖关系和依赖方法的组合通俗理解依赖关系是告诉机器起始和目标依赖方法是告诉机器用什么指令可以完成上述依赖关系上图就是Makefile的一个示例可以实现test.c文件编译为可执行文件test编写完Makefile文件后我们在命令行用make test或者只写make只写make会自动执行第一条线——test-test.o- test.s-test.i我们可以用指令make clean清除可执行文件依赖关系如果目标不需要依赖可以不写冒号后面。而.PHONY我们一会再介绍上述只是示例我们一般不是这样用的上幅图只是过渡不够泛型上述是Makefile的特殊语法可以使Makefile更灵活一些当我们已经有可执行文件test时我们再次makeLinux会出现这样的字样这是因为语法的制定者为了提高效率做出的考量如果我们的源文件test.c没有更新就不需要再次编译——也就是说编译器会比较test.c和test的最后修改时间如果前者小于后者就不会再次编译了而.PHONY会让make忽略源文件和可执行目标文件的修改时间对比因此引出一个问题修改时间是什么Modify是修改时间取决于文件内容是否被修改Change是状态改变时间取决于文件属性是否被修改但是文件内容一旦被修改Modify就会被修改Change一定被修改Access是访问时间由于访问文件会很频繁一访问就修改效率会很低因此有访问文件不会每次都修改访问时间可能是隔几次取决于系统