如何自动化不对包裹进行递归?

时间:2014-05-02 08:33:11

标签: automake

正如幼儿园的每个孩子都知道的那样,递归制作是一件非常糟糕的事情。

我非常清楚如何通过使用include语句和目录堆栈来正确处理大型非递归但很好地分布的GNU Make项目。

我是autotools的新手,现在我正在尝试使用上述知识,用autotools和Linux软件包做同样的事情。

Automake手册说

" Automake提供了足够的跨目录支持2,使您能够为复杂的多目录包编写单个Makefile.am"

太棒了......但那是没有意义的吗?

我当然有多个软件包,并且非递归性自动设置的重点是,不要对这些软件包进行递归。因此,就像在GNU Make中一样,有一个顶级Makefile.am包含特定于各个包的片段。

但是当然,我仍然需要多个软件包,就像我通常使用(坏)递归设置一样。

使用良好的非递归设置替换错误的递归设置应该意味着,保留其他所有内容,而不是"用一个大包替换所有包"。

是否可以进行非递归自动设置,而不会破坏先前递归设置中的先前目标和目标?

1 个答案:

答案 0 :(得分:1)

我猜你更喜欢Karel's approach to non-recursive automake而不是mine

一般来说,回答你的问题是要弄清楚你对#34; package"这个词的意思,因为make没有这样的概念。如果你的意思是通常也称为" module&#34 ;,即源代码和构建文件都驻留在的子目录,是的,它非常可能使用非递归automake做了Karel的方式。

如果您指的是可以单独重新分发然后组合在一起构建的内容,那么答案是否定的,在{{1}中没有这样做的方法因为拥有单个构建树的重点是你有一个分布式软件包,automake将为你创建压缩的tarball。