我手上有一个大型项目(主项目),该项目分为几个部分(liba,b,c,d)以简化构建和维护。构建整个程序包时,必须按顺序构建所有子组件,并且其中一些程序包相互依赖。
更明确地说,liba是b,c和d的先决条件,并且liba的存在由配置脚本检查。单独构建b分布时,绝对必须进行此检查才能提供用户友好的错误消息。但是,在构建主包及其所有子包时,liba被构建为子目标。因此,当在主套件上运行configure时,尚未安装liba,并且b中的liba检查失败。
我可以通过将--with-liba = internal或类似的标志传递给b的配置脚本来纠正此问题。但是,我还没有找到有关autoconf这样的标志传递的任何文档。暂时,我在master中有一个很长很长的自定义Makefile,它与具有子目录的autoconf/automake一样,但是对依赖项进行了重新排序,以便代替(configure liba)=>(configure b)=>(build liba)=>(内部版本b),顺序为(配置liba)=>(内部版本liba)=>(安装liba)=>(配置b)=>(内部版本b)。
知道如何使用标准的autoconf/automake子目录来重构它吗?
最佳答案
This mail可能会有所帮助。
关于packaging - 具有子包的Autoconf子目录是否相互依赖?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7552845/