我手头有一个大型项目(master),它分为几个组件(liba、b、c、d)以简化构建和维护。在构建整个包时,必须按顺序构建所有子组件,其中一些包相互依赖。
更明确地说,liba 是 b、c 和 d 的先决条件,并且 liba 的存在由配置脚本检查。在单独构建 b 发行版时,此检查对于提供用户友好的错误消息绝对是必要的。但是,在构建主包及其所有子包时,liba 被构建为子目标。因此,当在 master 套件上运行 configure 时,liba 尚未安装,并且 b 中的 liba 检查失败。
我可以通过将 --with-liba=internal 或类似标志传递给 b 的配置脚本来纠正此问题;但是,我还没有找到任何关于这种自动配置标志传递的文档。目前,我在 master 中有一个很长很长的自定义 Makefile,它与子目录的 autoconf/automake 一样,但重新排序依赖关系,而不是 (configure liba) => (configure b) => (build liba) => (build b),顺序是 (configure liba) => (build liba) => (install liba) => (configure b) => (build b)。
知道如何使用标准的 autoconf/automake 子目录来重构它吗?