在学习如何编写makefile文件之前,我们首先需要了解什么是makefile文件:

makefile描述了整个工程的编译和链接等规则。它指明了哪些文件需要先编译,哪写文件需要后编译,哪些文件需要重新编译,甚至进行更复杂的功能操作。makefile的“自动化编译”可以极大的提高软件的开发效率。

makefile的基本规则:

目标:依赖

(tab)命令

根据这个命令来编写一个简单的makefile文件:

定义了fun1.cpp fun2.cpp head.h 和main.cpp文件,利用这几个文件来编写一个简单的nakefile文件。

 

那准备工作做完后,我们来创建makefile文件:

vim makefile

在makefile文件里面,我们写上:

main:main.cpp fun1.cpp fun2.cpp
    g++ main.cpp fun1.cpp fun2.cpp -o main

 创建好后,输入make命令,运行,得到main可执行文件

 输入./main运行可执行文件:

缺点:当这些文件没有被修改时,运行make命令,它会提示我们所有的文件都是最新的,这也展现了makefile文件知道项目什么时候需要编译,那些文件需要编译,哪些不需要。但是当我们只修改了其中一个文件时,在重新执行make命令,所有的文件都会重新编译。如果这个项目里面有很多文件的话,那修改一个,就要重新编译很多个文件,这样执行效率就会很低。

为了解决这个问题,我们将makefile文件进行改写:

main_test : main.o fun1.o fun2.o
    g++ main.o fun1.o fun2.o -o main_test.o

main.o : main.cpp
    g++ -c main.cpp -o main.o -I./

fun1.o : fun1.cpp
    g++ -c fun1.cpp -o fun1.o

fun2.o : fun2.cpp
    g++ -c fun2.cpp -o fun2.o

重新执行make命令, 当面对新的文件被修改,那么只要要重新编译被修改的文件即可。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐