MAKEFILE详解 环境变量 工作方式 九

阅读小结:环境变量,make工作步骤

转自 http://www.cppblog.com/ivenher/articles/22093.html

MAKEFILE详解 环境变量 工作方式 九

四、环境变量 MAKEFILES  

如果你的当前环境中定义了环境变量MAKEFILES,那么,make会把这个变量中的值做一个类似于include的动作。这个变量中的值是其它的Makefile,用空格分隔。只是,它和include不同的是, 从这个环境变中引入的Makefile的“目标”不会起作用,如果环境变量中定义的文件发现错误,make也会不理。 

但是在这里我还是建议不要使用这个环境变量,因为只要这个变量一被定义,那么当你使用make时,所有的Makefile都会受到它的影响,这绝不是你想看到的。在这里提这个事,只是为了告诉大家,也许有时候你的Makefile出现了怪事,那么你可以看看当前环境中有没有定义这个变量。 


五、make的工作方式 

GNU的make工作时的执行步骤入下:(想来其它的make也是类似) 

    1、读入所有的Makefile。 
    2、读入被include的其它Makefile。 
    3、初始化文件中的变量。 
    4、推导隐晦规则,并分析所有规则。 
    5、为所有的目标文件创建依赖关系链。 
    6、根据依赖关系,决定哪些目标要重新生成。 
    7、执行生成命令。 

1-5步为第一个阶段,6-7为第二个阶段。第一个阶段中,如果定义的变量被使用了,那么,make会把其展开在使用的位置。但make并不会完全马上展开,make使用的是拖延战术,如果变量出现在依赖关系的规则中,那么仅当这条依赖被决定要使用了,变量才会在其内部展开。 

当然,这个工作方式你不一定要清楚,但是知道这个方式你也会对make更为熟悉。有了这个基础,后续部分也就容易看懂了。

猜你喜欢

转载自blog.csdn.net/wqfhenanxc/article/details/80839080
今日推荐