一、makefile的作用
makefile是一个文件,是围绕依赖关系和依赖方法的自动化编译工具
一个工程中的源文件有很多,按照不同的类型、功能、模块放在不同的目录中。而makefile定义了一系列的规则来指定,那些文件需要先编译,那些文件需要后编译,以及更加复杂的功能
makefile的好处:自动化编译。makefile在编写完成后,只需要执行make命令,就可以对整个工程进行自动编译,提高了软件开发的效率
make是一条命令,用来运行makefile文件。makefile是一个文件,用于定义编译的规则。两个搭配使用,完成项目自动化构建
二、使用方法
一个简单的makefile文件编写
test:test.c
gcc -o test test.c
.PHONY:clean
clean:
rm -f test
这段代码中的解释如下:
1)现有文件为test.c,目标文件为test。通过执行gcc生成test文件
2).PHONY的英文示意是伪造的、假的。因此代码可以简单理解为伪造了一个clean文件。执行clean文件就会执行下面clean内实现的语句rm -f test
程序执行结果如下:
三、问题
问题一:如果连续执行两次make操作,是否会生成两个test可执行文件?
并不会重复生成文件,会提示可执行文件已经为最新
问题二:makefile如何得知是否需要重新执行呢?
通过对比时间来执行,可以使用stat命令来查看文件状态
如果源文件的更改时间比可执行文件的时间跟新,则重新生成可执行文件
可以通过touch测试,touch的功能是如果不存在文件则生成该文件,如果存在文件则更新该文件的时间
从下图可以看出,在touch后test.c的时间更新。因此make会重新生成新的可执行文件