现在我有两个makefile,A.mk和B.mk。
A.mk将包括B.mk 但B.mk是由一些在A.mk中执行的命令动态生成的
这是A.mk的伪代码
<ul class="upgradePlan mT20 poRel ">
<li class="monthRow yrRow cf replacerow">
<div class="desc"><h1>Yearly <span><b>Savings</b> Plan</span></h1></div>
<div class="freeCol poRel">
<h1 class="pepstart">INR<span>9,999</span></h1>
<p class="svng"><!-- Save 26% --></p>
<p class="bldAnvl">Billed Annually</p>
<span class="proM"><p class="opt"><a class="connect premiumBtn mt3" data-form="payment" data-param="2" data-index="19" href="javascript:;">Start Now</a></p></span></div>
<div class="proCol poRel">
<h1 class="peppro">INR<span>14,999</span></h1>
<p class="svng"><!-- Save 26% --></p>
<p class="bldAnvl">Billed Annually</p>
<span class="proM"><p class="opt"><a class="connect premiumBtn" data-form="payment" data-param="3" data-index="19" href="javascript:;">Start Now</a></p></span></div>
<div class="cstClr poRel"><span class="cstM">
<h1 class="pepultima">INR<span>44,999</span></h1>
<p class="svng"><!-- Save 44% --></p>
<p class="bldAnvl">Billed Annually</p>
<p class="opt"><a class="connect premiumBtn" data-form="payment" data-param="4" data-index="19" href="javascript:;">Start Now</a></p></span></div>
</li>
<li class="row cf">
<div class="desc"><h6>Google Adwords</h6></div>
<div class="freeCol"><p>No</p></div>
<div class="proCol proAdwords"><p>INR 1,000</p></div>
<div class="cstClr ultimaAdwords"><p>INR 2,500</p></div>
</li>
<li class="row twolBr cf">
<div class="desc"><h6>Pepads</h6></div>
<div class="freeCol freePepads"><p>INR 2,500</p></div>
<div class="proCol proPepads"><p>INR 7,500</p></div>
<div class="cstClr ultimaPepads"><p>INR 20,000</p></div>
</li>
</ul>
问题是include命令类似于C文件中的#include宏。 A.mk尝试在执行命令之前加载B.mk。
有人能给我一些建议吗?
非常感谢 杰里
答案 0 :(得分:1)
可以让它像这样工作:
a.mk (此时,b.mk
不存在)
-include b.mk
all:
@echo foo : $(FOO)
b.mk:
@echo "FOO=2" > b.mk
使用make -f a.mk all
我们可以获得:
foo:2
如果-
不存在,则include指令前面的符号b.mk
不允许生成警告。
正如MadScientist在评论中所述,您不需要将B.mk
作为任何目标的先决条件。如果make
看到它丢失并找到相应的目标,它将自动构建它。