如何动态包含makefile

时间:2017-11-21 09:35:21

标签: c++ dynamic makefile include

现在我有两个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。

有人能给我一些建议吗?

非常感谢 杰里

1 个答案:

答案 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看到它丢失并找到相应的目标,它将自动构建它。