Makefile中常用规则总结

Makefile中常用规则总结
一、make常用选项
-d    显示调试信息
-f    指定从哪个文件中读取依赖关系信息。默认文件是“Makefile”或“makefile” ,”-“表示从标准输入
-h    显示所有的Makefile的help信息
-n    打印所有Makefile执行命令,但不执行这些命令
-s    运行时不显示任何信息  
注释 :#
连接符:\
关联列表和命令列表中使用shell通配符:?、*
默认模式规则
%.o:%.c:
  (CC) (CC)(CFLAGS) -c $<
%.o:%.s:
  (AS) (AS)(ASFLAGS) -o @ @<
简单变量
定义:变量名:=文本
添加:变量名+=文本
变量引用
()  {变量名}
  @  当前目标的名称
?    <   比当前目标更新的已修改的当前依赖性名称
   使makeall    Makefile  make all #使目标全部被执行
clean    删除make all生成的所有文件
install   在系统目录中安装工程项目生成的可执行文件和文档
uninstall 删除make install 安装的所有文件

二、Make命令与Makefile
Makefile文件内容
显示规则:说明了如何生成一个或多个目标文件(包括要生成的文件/文件的依赖文件/生成的命令)。
隐式规则
变量定义:一般是字符串,Makefile被执行时,其中变量都会拓展到相应的引用位。
文件指示: 1 在一个Makefile文件中引用另一个Makefile文件 (类似include)
2 根据某些情况指定makefile文件中的有效部分 (类似预编译#if)
3 定义一个多行的命令
注释: 注释符#(Makefile文件中需要用到#,可以使用#转义)
注意:
makefile文件的文件名可以是其他名称,但要使用-f或–file指定

make工作执行步骤
    1 读入所有makefile文件
    2 读入被include包括的其他makefile文件
    3 初始化文件中的变量
    4 推导隐式规则,并分析所有规则
    5 为所有目标文件创建依赖关系链
    6 根据依赖关系,决定哪些目标要重新生成
    7 执行生成命令

make参数                    例子                        作用
    -f --file            make -f makelinux        指定特定的makefile文件
    -I --include-dir                            在指定目录下寻找makefile文件
    -n --just-print                              只是显示->命令不执行命令
    -s --silent                                 禁止命令的输出显示

makefile关键子                    例子                            作用
    include                     include ../Make.defines        将别的makefile文件包含进来
                                include foo.make *.mk (bar)−include不理会无法找到的文件wildcardobjects:= (bar)−include不理会无法找到的文件wildcardobjects:=(wildcard *.o)     让通配符在变量中展开,即让objects的值成为所有.o的文件名的集合
    vpath <pattern> <directory>    vpath %.h ../headers        为符合模式<pattern>的文件指定搜素目录

                                vpath %.c foo:bar
                                vpath       blish                这两句一起用的话,表示.c结尾的文件先在foo,然后在bar,最后在blish中寻找
    vpath <patterh>                                            清除符合模式<pattern>的文件的搜索目录
    vpath                                                     清除所有已设置好的文件搜索目录

定义环境变量            例子                        作用
    MAKEFILES                                把此变量的值(其他makefile,多个文件用空格分隔)作为一个类似于include的动作
    VPATH            VPATH = src:../headers  让make根据路径寻找目标依赖文件,多个路径用:隔开

自动变量
    @目标集 @目标集<  所有的依赖目标集


Makefile书写规则(里面的命令其实是shell命令)
    通配符(定义一系列比较类似的文件)
        *            objects=*.o             所有的.o文件的集合
        ?
        []
        ~             ~/test                     表示宿主主目录下test文件

    文件搜寻
        VPATH
        vpath 关键字

    伪目标
        .PHONY        .PHONY: clean            伪目标可以直接放在make后面像操作文件一样操作
                    make clean

    多目标

    静态模式
        目标集合            目标集模式             目标集的二次定义
        <targets ...>: <target-pattern>: <prereq-pattern>
            <commands>
            ...

    makefile文件的函数
        filter

    自动生成依赖关系
        gcc -MM main.c         //查找main.c文件包含的头文件,并生成依赖关系
        .d文件的应用
使用命令
    显示命令 @ehco (@避免输出命令,只输出命令执行结果)

    执行命令 
        exec:
            cd /home/hchen; pwd        第二条命令执行建立在第一条命令结果上
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值