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