c++ 的程序生成过程是有 预编译,编译,和链接三个阶段组成的。
当我们使用单个cpp文件的时候,直接用命令
g++ main.cpp -o main
就可以得到我们需要的可执行文件,一个文件就没有链接的步骤了。
但是,如果我们的项目需要用到多个cpp文件,那么我们就要用到链接了。
比如我们有一个主文件 : main.cpp
另外编写了一个类: book.cpp
以及这个类的声明文件:book.h
那么如果我们手动写g++编译命令怎么写呢。
1.产生编译文件,使用 -c参数表示只编译不链接
g++ -c main.cpp -o main.o
g++ -c book.cpp -o book.o
这个时候就会生成main.o 和book.o两个编译好的文件。
2.链接
g++ main.o book.o -o project
这个时候就会产生名为project的可执行文件了。
可是如果要链接的文件特别多还经常改变,那么我们一个个手动编译链接就太没有效率了,所以这个时候出现了makefile
----------------------------------------------------------------------
makefile可以理解为对cpp文件进行编译、链接的脚本文件
编写规则如下:
target ... : prerequisites ...
(Tab键) command
all: project
project:main.o book.o
g++ main.o book.o -o project
main.o:main.cpp
g++ -c main.cpp -o main.o
book.o:book.cpp
g++ -c Sales_item.cpp -o book.o
clean:
rm *.o
然后,我们在Linux运行命令
make
系统就会自动执行上面的makefile脚本
然后生成可执行文件 project
最后我们执行 make clean 就会运行命令 rm *.o 这样就可以删除生成的中间文件。