• 3.4 设置环境变量MAKEFILES


    一、MAKEFILES简介

    MAKEFILES是一个环境变量,可以用来指定额外的makefile文件列表。当设置了MAKEFILES环境变量后,make命令会在其他makefile文件之前读取这些指定的makefile文件。

    使用MAKEFILES类似于使用include指令,可以在多个目录中搜索这些makefile文件。如果在指定的目录中找不到这些文件,make命令不会报错。

    通常情况下,MAKEFILES用于在递归调用的make命令之间进行通信。通常不建议在顶层调用make命令之前设置环境变量,因为最好不要从外部干涉makefile。然而,如果您在没有特定makefile的情况下运行make命令,则在MAKEFILES中列出的makefile可以做一些有用的工作,例如定义搜索路径。

    然而,不推荐在登录时自动设置MAKEFILES环境变量,并编写预期此操作的makefile。这样做是很不好的做法,因为如果其他人运行这些makefile,它们将无法正常工作。最好的做法是在makefile中显式地使用include指令。

    二、MAKEFILES的用法

    在一个空目录下创建三个文件:main.mk和sub.mk 以及Makefile。每个文件中都定义一个目标规则。
    main.mk

    # main.mk
    .PHONY: main
    
    main:
        @echo "Hello from main.mk"
    
    • 1
    • 2
    • 3
    • 4
    • 5

    sub.mk

    
    # sub.mk
    .PHONY: sub
    
    sub:
        @echo "Hello from sub.mk"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 设置环境变量MAKEFILES为sub.mk的路径(假设它位于当前目录中)。
    export MAKEFILES=./sub.mk
    
    • 1
    1. 在Makefile中使用include指令读取MAKEFILES环境变量所指定的makefile文件。

    Makefile

    include $(MAKEFILES)
    
    all: main
    
    main:
        @echo "Hello from main.mk"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 运行make命令,查看输出结果。
    $ make
    Hello from sub.mk
    Hello from main.mk
    
    • 1
    • 2
    • 3

    在这个示例中,我们使用MAKEFILES环境变量来读取sub.mk中定义的目标规则,然后我们在Makefile中定义了一个all目标规则。当我们运行make命令时,sub.mk中的目标规则被首先执行,然后再执行main.mk中的目标规则。

  • 相关阅读:
    ChatGPT-4 Alpha:OpenAI的革命性升级
    前端训练营:1v1私教,帮你拿到满意的offer
    深度解读DBSCAN聚类算法:技术与实战全解析
    高斯消元
    算法进阶——字符串的排列
    GBase 8c 管理平台(一)-部署配置
    app小程序定制开发的优势|企业软件网站建设
    《痞子衡嵌入式半月刊》 第 54 期
    jar 文件携带参数启动
    【DRAM存储器十六】DDR2介绍-DDR到DDR2的变化、DDR2框图详解、模式寄存器
  • 原文地址:https://blog.csdn.net/MrWangHao/article/details/132916366