【问题标题】:how to automake not recurse on packages?如何自动制作不在包上递归?
【发布时间】:2014-05-02 08:33:10
【问题描述】:

每个幼儿园的孩子都知道,递归 make 是一件非常糟糕的事情。

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

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

Automake 手册说

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

太好了……但那是没有意义的不是吗??

我当然有多个包,并且进行非递归 automake 设置的重点是不递归这些包。因此,就像 GNU Make 的情况一样,拥有一个顶级 Makefile.am,其中包含特定于各个包的片段。

当然,我仍然想要多个包,就像我通常使用(糟糕的)递归设置一样。

用一个好的非递归设置替换糟糕的递归设置应该意味着,让其他一切保持原样,而不是“用一个大包替换所有包”。

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

【问题讨论】:

    标签: automake


    【解决方案1】:

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

    一般来说,回答你的问题就是弄清楚你对“包”这个词的意思,因为make没有这个概念。如果您的意思是通常也称为“模块”的东西,即源代码和构建文件都驻留的子目录,是的,使用非递归 automake 完成 Karel 的方式绝对可以做到这一点。

    如果您指的是可以单独重新分发然后组合在一起构建的东西,那么答案是否定的,automake 中没有这样的方法,因为拥有单个构建树的全部意义在于您拥有一个分布式包,以至于make dist 将为您创建压缩的 tarball。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      相关资源
      最近更新 更多