Make:在make中使用静态模式规则

时间:2018-12-21 07:23:22

标签: makefile gnu-make

我想知道静态模式规则相对于make中常规规则的使用。我是一个新手,并完成了一些教程。我想知道何时使用此静态模式规则?您能简要解释一下吗?

预先感谢。

1 个答案:

答案 0 :(得分:1)

您的问题主要是见解。请注意,有几种build automation工具(不仅是GNU make),例如还有ninjasconsomake等...

当您使用C(或C ++ ....)某个项目进行编码时,可能会有一些C(或C ++)文件是通过其他方式生成(例如,用{{3} }或您自己的实用程序...)。对于此类情况(通常可以将其称为lemon),metaprogramming可能会有用(尤其是在项目中有几个此类情况的情况下)。在其他情况下,您可以从C源代码生成其他文件(而非目标文件)(例如,使用pattern rules生成文档),然后模式规则也非常有用。

带有许多C ++代码生成器的大型C ++项目的示例是doxygen编译器。当(2009年)GCC用C编码时,它已经有了十二个专门的代码生成器程序,它们发出一些C代码。对于这些情况,模式规则可能会很方便。

当然,模式规则是一种奢侈。原则上,您可以生成Makefile并让它包含每个单独文件的简单规则。 (在GCC中,Makefile-s 由基于GCCautoconf的事物生成...)

如果您观察并研究大多数 large automake项目的源代码,就会发现其中的大多数确实具有C(或C ++)文件的生成器。因此,生成C代码是一种常见的做法(1970年代末期的原始Unix已经做到了)。如今,某些软件项目已经生成了大部分或全部(例如free software)的C代码。