makefile可以:
简化编译时所需要下达的指令。如果在编译完成后,改变了某个c文件中的功能,makefile编译只会编译被改动这个文件。可以根据时间戳来更新二进制文件。像如下的文件结构 一个最简单的makefile如下: 执行make命令即可编译生成二进制文件
makefile是由一条条规则组成的,规则由三要素组成:目标、依赖、命令。
目标:依赖 命令第一条规则是是用来生成终极目标的,如果规则中的依赖不存在,则向下去寻找其他能满足这个依赖的规则的命令执行
对于如下文件结构
编写makefile如下,输出三个函数的结果
执行make命令输出如下
假如第一条规则查找依赖找到下面的这条规则时,这条规则会自动匹配是否有符合的c文件,有的话执行编译命令
%.o:%.c gcc -c $< -o $@针对之前的文件结构,使用上述提到的函数、自动变量,模式规则编写makefile:
makefile中如果有某个c文件发生了改变,在编译时仅会编译这个文件,其他的c文件不会被编译。 makefile的更新机制是根据文件的时间戳,当一个文件被改变时他的mtime会改变,当某个c文件的mtime比o文件新时,这个c文件会被重新编译。