makefile使用方法

1. Makefile格式

    target:dependency_files         

    <TAB> command   //即make需要执行的命令

    vi一个Makefile文件,用make执行,make默认执行第一个文件,也可以make f1.c其中一个c文件。就是将.c文件生成.o目标 文件,上面一句是说明目标文件的依赖,下面是执行语句,最终make执行命令。    

2.Makefile一些理论知识

    把源码生成.o文件叫编译

    把大量的.o文件生成可执行文件叫链接。链接时主要链接的是函数和全局变量。

    总结一下,源文件首先会生成中间目标文件,再由中间目标文件生成执行文件。在编译时,编译器只检测程序语法,和函数、变量是否被声明。如果函数未被声明,编译器会给出一个警告,但可以生成Object File。而在链接程序时,链接器会在所有的Object File中找寻函数的实现,如果找不到,那到就会报链接错误码(Linker Error),在VC下,这种错误一般是:Link 2001错误,意思说是说,链接器未能找到函数的实现。你需要指定函数的Object File.

在这个makefile中,目标文件(target)包含:执行文件edit和中间目标文件(*.o),依赖文件(prerequisites)就是冒号后面的那些 .c 文件和 .h文件。每一个 .o 文件都有一组依赖文件,而这些 .o 文件又是执行文件 edit 的依赖文件。依赖关系的实质上就是说明了目标文件是由哪些文件生成的,换言之,目标文件是哪些文件更新的。在定义好依赖关系后,后续的那一行定义了如何生成目标文件的操作系统命令,一定要以一个Tab键作为开头。记住,make并不管命令是怎么工作的,他只管执行所定义的命令。

3.makefile常用的一些参数

    make –f  makefile.debug//-f是将后面的文件当作makefile来执行

    make –i 忽略所有错误命令继续执行完,很重要

    例子:hello.o :hello.c hello.h

           gcc –chello.c –o hello.o

    gcc -Wall:warning显示出来

    -c:只编译不链接,生成目标文件.o

    -o file:表示把文件输出到file里

    -n :只打印要执行的命令,但不执行这些命令

    -s:在执行命令时不显示命令

    -I include在文件夹中搜索

    -C $@  :进入所有的子目录中

    make的隐含规则,当执行文件存在时,file.o的目标的依赖会自动推导为file.c,并生成执行命令,可以大大简化make的编写。

    VPATH:虚路径,在当前目录找不到源文件时,就会去其他目录寻找,如:VPATH = src1 src2 main

    find ./-name “*.o”//找到当前目录下所有.o的文件

    find ./-name “*.o”exec rm {} \  //把找到的文件删除

    $^:获取所有依赖文件

    $@:获取所有目标文件

    $<:获取第一个依赖文件

    $?:表示比目标还要新的依赖文件列表

    makefile的嵌套使用(常用)

    @echo$():输出,且不显示输出命令

    exportCC OBJS  //让子makefile可以使用定义的自变量

    用到自己的头文件时用“”而不是<stdio>

    clean的用法:

    .PHONY:clean    //防止某个文件和clean重名

    clean:*.o test   //删除所有的中间文件和执行文件

 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值