我是靠谱客的博主 无私小甜瓜,最近开发中收集的这篇文章主要介绍linux makefile 框架分析1,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

主Makefile

[17] MAKECMDGOALS: 命令行传入的构建对象

[22] __all : 默认目标

[40] sub_make_done: 存在的意义,构建框架存在递归调用的行为,而对于有全局影响的一些变量和规则需要在递归之前处理,因此需要通过 sub_make_done 完成对这些内容的保护,只在第一次进入主makefile的时候才会运行

         MAKEFLAGS: 添加make配置,比如 -rR(禁用隐式规则)

         V: 配置构建输出的打印的量级,KBUILD_VERBOSE

         O: 指定输出目录, KBUILD_OUTPUT,

         abs_objtree: 目标输出路径,如果没有指定O,就是make当前目录CURDIR,(注意:-C 指定目录,CURDIR为-C所指定的目录;-f 指定makefile,CURDIR还是当前make指令运行目录)

                  need-sub-make: 如果abs_objtree 不等于 CURDIR(make O=xxx),则该变量置1

          abs_srctree: 源码目录,即主Makefile所在目录

                  如果 abs_objtree 和 ads_srctree不等(make -f path/to/makefile),need-sub-make = 1,并且 MAKEFLAGS += --include-dir=$(abs_srctree): 指定一个目录搜索makefile

                  this-makefile: 最新的make 解析的makefile,即主Makefile

[177] sub_make_done = 1, 且export: 保证只运行一次

[179] 如果 need-sub-make = 1, 触发sub_make, 使用绝对路径,在主makefile 路径构建主makefile

             make -C $(abs_objtree) -f $(abs_srctree)/Makfefile $(MAKECMDGOALS)

[191] end sub_make_done

[194] ifeq need-sub-make = 0, 即没有触发sub-make,通过这个可以解决触发sub-make时,主makefile的后面部分只会在sub-make中执行,而第一次进入主makefile时后面部分直接跳过,解决递归引起的重复执行问题

         见linux makefile框架分析2

[1906] end need-sub-make

最后

以上就是无私小甜瓜为你收集整理的linux makefile 框架分析1的全部内容,希望文章能够帮你解决linux makefile 框架分析1所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部