当我给 make 它如何找到顺序 ADW、AEG .. 并一个接一个地构建?
嗯,嗯,是的,但不完全一样.....我完全同意@madscientist 和@twalberg 的观察。
看看示例 makefile :
Kaizen ~/make_prac $ cat mk.name
## make to accept name and display hello name
arg1="" ;
.PHONY : name \
hello
hello : name
echo "hello $(arg1)" ;
name :
echo "name given is : $(arg1)" ;
在这里,一旦 make 读取了 makefile(descriptor file) ,它就能够形成一个依赖树....就像什么依赖/需要什么。所以在内部它使 a 有这样的东西......
hello <-- name <-- no dep
name <-- no dep
这是基于makefile的内容——规则/目标(hello和name是这里的规则)和它们的依赖列表(文件/目标在:之后)
所以从线
hello : name
echo "hello $(arg1)" ;
它可以暗示要构建目标 hello ,目标名称需要首先可用/构建。同样,它会遍历每个提到的目标及其依赖列表,在此过程中创建一个“整体构建”链(您也可以将其称为依赖树)......如上所述。
对于执行,它始终引用构建链并在构建目标本身之前构建目标的依赖项(如果它们已过时)
示例的输出:
Kaizen ~/make_prac $ make -f mk.name arg1="kaizen" ;
echo "name given is : kaizen" ;
name given is : kaizen
echo "hello kaizen" ;
hello kaizen
现在回到你的问题:
MODULES = ADW AEG DLG FDUfinance ODD PRI SPPA ADFGcommon PYMT LUR LBD \ FAA PPTP COLLINT COR ADFG COA COLLINTtestRecord COLLINTtestScenario \ LFPL LFP include $(CORE)/BUILD/package.mk
这里 Module 不是一个目标,而是一个变量,我想在你的 makefile 的下面某处被替换为一个规则..... chk 出现 $(MODULE)
但是没有准确的方法可以说 ADW 将在 AEG 之前构建 .... 就像在您的 makefile 中,如果一条规则可能将 AEG 声明为目标 ADW 的依赖项,那么构建 ADW make 将必须首先构建 AEG 从而添加到它的构建链 ADW <-- AEG。
因此扭转你的假设......这是否有助于你理解链接过程?
如果你还是有点困惑......访问链接http://www.jfranken.de/homepages/johannes/vortraege/make_inhalt.en.html
这应该会在大约 5-7 分钟内向您解释大部分概念......
希望这可以帮助 !