zoukankan      html  css  js  c++  java
  • Makefile——读《跟我一起写Makafile》

    重新回顾一下makefile,打好基础很重要!

    1、Makefile的规则

    target ... : prerequisites ...
        command
        ...
        ...
    

    target 也就是一个目标文件,可以是 Object File,也可以是执行文件。还可以是一个标签(Label)
    prerequisites 就是,要生成那个 target 所需要的文件或是目标。
    command 也就是 make 需要执行的命令。(任意的 Shell 命令)

    依赖关系的实质上就是说明了目标文件是由哪些文件生成的,换言之,目标文件是哪些文件更新的。make 会比较 targets 文件和 prerequisites 文件的修改日期,如果

    prerequisites 文件的日期要比 targets 文件的日期要新,或者 target 不存在的话,那么,make 就会执行后续定义的命令。


    2、makefile中变量的定义


    makefile中变量的定义和bash中变量的定义很像

    objects = main.o kbd.o command.o display.o \
    insert.o search.o files.o utils.o
    edit : $(objects)
        cc -o edit $(objects)

    3、make自动推导


    只要make看到一个[.o]文件,它就会自动的把[.c]文件加在依赖关系中,例如make找
    到一个whatever.o,那么whatever.c,就会是whatever.o 的依赖文件。

    “.PHONY”表示,clean是个伪目标文件。

    .PHONY : clean
    clean :
        -rm edit $(objects)
    

    rm前面加小减号意思是也许某些文件出现问题,但不要管,继续做后面的事。

    Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。

    文件搜寻


    Makefile文件中的特殊变量“VPATH”可以指定一个或多个目录,当make在当前目录找不到指定的依赖文件和目标文件,就会到VPATH所指定的目录中去找寻文件。
    VPATH = src:../headers
    上面的的定义指定两个目录,“src”和“../headers”,目录由“冒号”分隔。
    另一个设置文件搜索路径的方法是使用make的“vpath”关键字。
    1)vpath <pattern> <directories>
    为符合模式<pattern>的文件指定搜索目录<directories>。
    2)vpath <pattern>
    清除符合模式<pattern>的文件的搜索目录。
    3)vpath
    清除所有已被设置好了的文件搜索目录。

    ++++++++++++才看到16页,有空继续看呀!!!!

  • 相关阅读:
    流程控制
    数据类型和运算符
    抽奖
    蓝桥杯 第五届
    python下编译py成pyc和pyo
    Django中提示TemplateDoesNotExist?
    Ubuntu16.04 apache2 wsgi 部署django
    Ubuntu 14.04下Django+MySQL安装部署全过程
    LVM原理及PV、VG、LV、PE、LE关系图
    SQLServer2008-镜像数据库实施手册(双机)SQL-Server2014同样适用
  • 原文地址:https://www.cnblogs.com/bo083/p/2817009.html
Copyright © 2011-2022 走看看