• 【ASM C/C++】 Makefile 规则说明


    make 命令会自动读取当前目录下的 Makefile 文件[31],完成相应的编译步骤。Makefile 由一组规则(Rule)组成,每条规则的格式是:
    target ... : prerequisites ...

       command1

      command2

      ...

    目标和条件之间的关系是:欲更新目标,必须 首先更新它的所有条件;所有条件中只要有一个条件被更新了,目标也必须随 之被更新。所谓“更新”就是执行一遍规则中的命令列表,命令列表中的每条 命令必须以一个 Tab 开头,注意不能是空格,Makefile 的格式不像 C 语言的缩 进那么随意,对于 Makefile 中的每个以 Tab 开头的命令,make 会创建一个 Shell 进程去执行它。

    • 目标没有生成。

    • 某个条件需要更新。

    • 某个条件的修改时间比目标晚。

    clean 目标是一个约定俗成的名字,在所有软件项目的 Makefile 中都表示清 除编译生成的文件,类似这样的约定俗成的目标名字有: • all,执行主要的编译工作,通常用作缺省目标。 • install,执行编译后的安装工作,把可执行文件、配置文件、文档等 分别拷到不同的安装目录。 • clean,删除编译生成的二进制文件。 • distclean,不仅删除编译生成的二进制文件,也删除其它生成的文 件,例如配置文件和格式转换后的文档,执行 make distclean 之后 应该清除所有这些文件,只留下源文件。 

    变量:

    #定义变量
    PROJECT = test_projet
    #变量追加值
    PROJECT += $(AUTHOR)
    #立即展开的变量
    AUTHOR := A Been

    • $@,表示规则中的目标。

    • $<,表示规则中的第一个条件。

    • $?,表示规则中所有比目标新的条件,组成一个列表,以空格分隔。

    • $^,表示规则中的所有条件,组成一个列表,以空格分隔。


    示例:
    all: main

    main: test.c
    gcc test.c

    clean:
    @echo cleanning $(PROJECT) project
    -rm *.out
    @echo clean completed

    install:
    @echo install project
    @echo install completed


    .PHONY: clean

    #定义变量
    PROJECT = test_projet
    #变量追加值
    PROJECT += $(AUTHOR)
    #立即展开的变量
    AUTHOR := A Been

  • 相关阅读:
    EXTJS 4.2 资料 控件之checkboxgroup的用法(静态数据)
    EXTJS 4.2 资料 控件之Window窗体相关属性的用法
    EXTJS 4.2 资料 控件之textfield文本框加事件的用法
    Entity Framework 学习笔记(一)之数据模型 数据库
    EXTJS 4.2 资料 控件之checkboxgroup的用法(动态数据)
    EXTJS 4.2 资料 控件之Grid 列鼠标悬停提示
    Entity Framework 学习笔记(二)之数据模型 Model 使用过程
    EXTJS 4.2 资料 控件之radiogroup 的用法
    EXTJS API
    vue移动端弹框组件,vue-layer-mobile
  • 原文地址:https://www.cnblogs.com/abeen/p/4381248.html
Copyright © 2020-2023  润新知