zoukankan      html  css  js  c++  java
  • 【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

  • 相关阅读:
    vim tab转换成space
    vs计算项目代码总行数
    读取xml文件
    复选框全选、取消全选
    网页上用js禁用鼠标右键
    腾讯、微软、亚马逊测试站点
    限制文本域输入字符个数,即使显示输入字符数和剩余字符数,超出不显示!
    DataUtil
    DES加密解密类
    JsonHelper(Json帮助类)
  • 原文地址:https://www.cnblogs.com/abeen/p/4381248.html
Copyright © 2011-2022 走看看