Makefile应用笔记(未完)

      旁白:想要做Linux平台下项目编程工作,之前在网上买了一本清华大学出版社出版的《Linux网络编程》便学了起来。几天过去了,在这平台上的开发还没磨合好,但是掌握了不少东西。今天死盯着Makefile这一块,算掌握了点东西,只知道现在一个脑袋两个大。但还是得记点关键的东西。

 

1、Makefile中预定义变量

      在Makefile中有一些已经定义的变量,用户可以直接使用这些变量,不用进行定义。

      Makefile的自定义变量包括:CC,RM,CFLAGS,CXXFLAGS等等,其中这些预定义变量有的默认值,有的没有默认值。如:RM的默认值为RM=rm -f,而CFLAGS没有默认值。CFLAGS有进行赋值时,使用C编译时是自动调用的。也就就是说在执行cc -o a.out *.o命令编译时,将自动变成这样 cc $(CFLAGS) -o a.out *.o 形式的命令调用。

 

2、Makefile中的自动变量

      $*:表示目标文件的名称,不包含目标文件的扩展名。

      $+:表示所有的依赖名文件,这些依赖文件之间以空格分开,按照出现的先后为顺序,其中可能包含重复的依赖文件。

      $<:表示依赖项中第一个依赖文件的名称。

      $?:依赖项中,所有的目标文件时间戳晚的依件,依赖文件之间以空格分。

      $@:目标项中目标文件的名称。

      $^:依赖项中,所有不重复的依赖文件,这些文件之间以空格分开。

 

3、Makefile自动文件路径搜索

      Makefile的目录搜索功能提供了一个指定需要搜索的目录,make会自动找到指定文件的目录并添加到文件上。使用VPATH变量可以实现此目的。VPATH变量的使用方法如下:

VPATH=path1:path2:...

      VAPTH 右边的冒号“:”分隔的路径名称,例如下面的指令:

    VPATH=add:sub (add和sub为路径目录) add_int.o:%.o:%.c $(CC) -c -o $@ $<

     add_int.o的规则自动扩展成如下代码:

    add_int.o:add/add_int.c cc -c -o add_int.o add/add_int.c  

4、自动推导规则

     使用make编译扩展名为.c的C语言文件的时候,源文件的编译规则不用明确地给出。这是因为make进行编译的时候会使用一个默认的编译规则,按照默认规则完成对.c文件的编译,生成对应的.o文件。它执行命令cc -c来编译.c源文件。在Makefile中只需要给出需要重建的目标文件名(.o文件),make会自动为这个.o寻找合适的依赖文件(对应的.c文件),并且使用默认的命令来构建这个目标文件。

 

 

 

6、MakeFile中的函数

5、递归make

你可能感兴趣的:(编程,linux,扩展,Path,出版,makefile)