zoukankan      html  css  js  c++  java
  • Makefile一些规则

    一、Makefile 的规则
    在讲述这个 Makefile 之前,还是让我们先来粗略地看一看Makefile 的规则。
    target ... : prerequisites ...
    command
    ...
    ...
    target 也就是一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标
    签(Label),对于标签这种特性,在后续的“伪目标”章节中会有叙述。
    prerequisites 就是,要生成那个target 所需要的文件或是目标。
    command 也就是make 需要执行的命令。(任意的Shell 命令)
    这是一个文件的依赖关系,也就是说,target 这一个或多个的目标文件依赖于prerequisites
    中的文件,其生成规则定义在command 中。说白一点就是说,prerequisites 中如果有一个以
    上的文件比target 文件要新的话,command 所定义的命令就会被执行。这就是Makefile 的
    规则。也就是Makefile 中最核心的内容。

    二、通过make命令即可执行Makefile或makefile文件。

    三、在makefile中可以使用变量,其变量就是一个字符串,可以理解成C语言中的宏

      比如: object = main.o hello.o

      于是,我们就可以很方便地在我们的 makefile 中以“$(objects)”的方式来使用这个变量了,

    四、makefile中的命令以tab按键开头

    五、:= 这种方法,前面的变量不能使用后面的变量,只能使用前面已定义好了的变量。

    六、还有一个比较有用的操作符是“?=”,先看示例:

      FOO ?= bar
      其含义是,如果 FOO 没有被定义过,那么变量FOO 的值就是“bar”,如果FOO 先前被定
      义过,那么这条语将什么也不做,其等价于:
      ifeq ($(origin FOO), undefined)
      FOO = bar
      endif

    七、我们可以使用“+=”操作符给变量追加值,如:

      objects = main.o foo.o bar.o utils.o
      objects += another.o

  • 相关阅读:
    从TCP三次握手说起——浅析TCP协议中的疑难杂症
    动态绑定是如何实现的?
    C++对象的内存模型
    C/C++关键字
    libevent库介绍--事件和数据缓冲
    libevent编程疑难解答
    大型工程多个目录下的Makefile写法
    C++中的RAII机制
    C++中的智能指针
    二叉树的非递归遍历
  • 原文地址:https://www.cnblogs.com/ruigelwang/p/12550227.html
Copyright © 2011-2022 走看看