zoukankan      html  css  js  c++  java
  • Linux学习笔记9——make和Makefile

    一,Makefile的文件名

      默认的情况下,make命令会在当前目录下按顺序找寻文件名为“GNUmakefile”、“makefile”、“Makefile”的文件,大部分情况下,make命令都支持makefile和Makefile这两种命名。所以一般情况下都是将文件名命为这两个,没有后缀。

    二,Makefile内容格式语法

      目标名:依赖目标
                            @命令
                            @命令

    三,make命令行的使用

      1,通用情况:make -f make脚本文件  目标名,这种情况适用于没有使用makefile或Makefile文件名,而是使用其它格式的命名方式,如:

            我们有一个demo.mk的Makefile文件,它里面有一个demo的目标名,那么我们的make命令行就是make -f demo.mk demo

            当然我们需要先指明路径,用export LD_LIBRARY_PATH=.  如果Makefile里面使用了动态库,这样就指明该动态库是在当前的文件夹内,否则会出现undefined reference to的错误。

      2,当Makefile的文件名为makefile或Makefile时,可以直接使用make 目标名

      3,当要执行的目标名在文件的第一个目标时,可以直接使用make指令

    四,目标的调用规则:(make把目标当作文件)

      make执行目标:
                            搜索与目标相同的文件
                            如果文件存在,则判定日期。
                            日期最新,则停止执行,输出提示
                            日期不是最新,则进行执行。
                            比较:当前目标与依赖目标

    五,变量

      可以使用变量的方式来代替重复出现的文件名,定义的方式为:变量=值

      调用的方式为:$(变量名) 或 ${变量}

    六,伪目标

      伪目标”并不是一个文件,只是一个标签,由于“伪目标”不是文件,所以make无法生成它的依赖关系和决定它是否要执行。

      假设我们这有一个目标clean,它的定义是这样的

      clean:

        rm *.o        //它将删除所有.o格式的文件

      将clean声明为伪目标的格式为:  .PHONY clean

  • 相关阅读:
    【网络】IP子网划分详解
    【java】package
    【java】异常
    【java】内部类
    【java】多态
    【java】抽象类和接口区别
    【java】接口
    Java并发编程之volatile关键字解析
    String ,StringBuffer, StringBuilder的区别
    Synchronized关键字、Lock,并解释它们之间的区别
  • 原文地址:https://www.cnblogs.com/zjzsky/p/3469612.html
Copyright © 2011-2022 走看看