Linux操作系统使用及C高级编程-D19-D21Makefile

自动化编译:一旦写好,只需要一个make命令,整个工程完全自动化编译,极大提高软件开发效率

提升编译效率:再次编译,只编译修改的文件

语法:

        target : prerequisites

         tab键 command

Linux操作系统使用及C高级编程-D19-D21Makefile_第1张图片Linux操作系统使用及C高级编程-D19-D21Makefile_第2张图片

 要使用makefile编译以上程序

Linux操作系统使用及C高级编程-D19-D21Makefile_第3张图片

 由上图可以看到左边是书写格式,右边是make编译,并且在没有任何改动的情况下,其会表明是最新,而若改动了以后,就可重新进行编译

下图左边是错误的两步编译,右边是正确的两步编译

Linux操作系统使用及C高级编程-D19-D21Makefile_第4张图片Linux操作系统使用及C高级编程-D19-D21Makefile_第5张图片

再进一步:当想要对编译好后的.o文件进行删除时,编译时使用make clean,可使用:

Linux操作系统使用及C高级编程-D19-D21Makefile_第6张图片

 而若出现同名文件clean的现象时:

Linux操作系统使用及C高级编程-D19-D21Makefile_第7张图片

Makefile自定义变量

        目的:

Linux操作系统使用及C高级编程-D19-D21Makefile_第8张图片

Linux操作系统使用及C高级编程-D19-D21Makefile_第9张图片

Linux操作系统使用及C高级编程-D19-D21Makefile_第10张图片

 使用SRC代替add.o sub.o test.o,并利用${SRC}取值

Linux操作系统使用及C高级编程-D19-D21Makefile_第11张图片

 当然也可使用赋值操作的+=

Linux操作系统使用及C高级编程-D19-D21Makefile_第12张图片

 Makefile自动变量

Linux操作系统使用及C高级编程-D19-D21Makefile_第13张图片

 若想查看自动变量是表示什么,10,11,12行

Linux操作系统使用及C高级编程-D19-D21Makefile_第14张图片

 使用几个自动变量

Linux操作系统使用及C高级编程-D19-D21Makefile_第15张图片

 Makefile隐含变量

Linux操作系统使用及C高级编程-D19-D21Makefile_第16张图片Linux操作系统使用及C高级编程-D19-D21Makefile_第17张图片

 使用CC=gcc,可以使得CC代替gcc,使用CFLAGS,得到如下:

Linux操作系统使用及C高级编程-D19-D21Makefile_第18张图片

当头文件未在当前目录下,在CFLAGS使用-I指定一下头文件路径

Linux操作系统使用及C高级编程-D19-D21Makefile_第19张图片

最后:由于都是.c生成.o文件,所以可以使用通配符%代替 

Linux操作系统使用及C高级编程-D19-D21Makefile_第20张图片

条件判断及函数使用

Linux操作系统使用及C高级编程-D19-D21Makefile_第21张图片

Linux操作系统使用及C高级编程-D19-D21Makefile_第22张图片

 函数语法:

        $()

        或者

        ${}

常用函数

Linux操作系统使用及C高级编程-D19-D21Makefile_第23张图片

Linux操作系统使用及C高级编程-D19-D21Makefile_第24张图片

Linux操作系统使用及C高级编程-D19-D21Makefile_第25张图片

 在没学习函数之前,是这样写的:

Linux操作系统使用及C高级编程-D19-D21Makefile_第26张图片

 使用函数的示例:

         其中2行获得所有的.c文件,3行将所有的.c文件转换成.o文件

Linux操作系统使用及C高级编程-D19-D21Makefile_第27张图片

自定义函数

 

其中8910是函数定义,18是函数调用

Linux操作系统使用及C高级编程-D19-D21Makefile_第28张图片

make的使用

Linux操作系统使用及C高级编程-D19-D21Makefile_第29张图片

 

你可能感兴趣的:(linux,运维,服务器)