• 【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

  • 相关阅读:
    《学习要像加勒比海盗》读书摘录
    【转载】关于软件测试的几点思考
    黑客与画家 摘录
    基于Jenkins的持续集成CI
    重新开始,整装出发
    java重写equals方法需要注意的几点
    《Google软件测试之道》摘录
    Using sql azure for Elmah
    Invalid object name ‘sys.configurations’. (Microsoft SQL Server, Error: 208)
    Cannot install ubuntu or other linux flavours on citrix Xen server
  • 原文地址:https://www.cnblogs.com/abeen/p/4381248.html
Copyright © 2020-2023  润新知