- make工具是一类自动化编译工具
- 有多种make工具
- QT- qmake
- cmake
- Linux GNU下的make
- ….
- make是一个命令工具,是一个解释makefile中指令的工具
- 不同的make各不相同,也有不同的语法,但本质上都是在“文件依赖性”上做文章
在编译时,编译器只检测程序语法,和函数、变量是否被声明。如果函数未被声明,编译器会给出一个警告,但可以生成 Object File。而在链接程序时,链接器会在所有的 Object File 中找寻函数的实现,如果找不到,那到就会报链接错误码(Linker Error)
- 也就是说,函数未声明时,如果实际没有使用到的话可能并不会报错(链接错误),只有未声明的告警
make命令执行时,需要有一个makefile文件以告诉make命令怎样去编译和链接程序
makefile规则
target ...: prerequisites ...
command
...
...
- target就是一个目标文件;可以是Objectfile或执行文件,甚至可以只是一个标签label(伪目标)
- prerequisites就是要生成target所需要的文件或目标
- command也就是make要执行的命令,可以是任意的shell命令
也就是说,target 这一个或多个的目标文件依赖于prerequisites 中的文件,其生成规则定义在 command 中。prerequisites中如果有一个以上的文件比 target 文件要新的话,command 所定义的命令就会被执行。