【发布时间】:2015-07-29 19:12:06
【问题描述】:
我有一个使用自动工具的大型项目,其中包含一些构建到实用程序库中的代码。该项目有很多依赖项,我想为移动环境(Android/iOS)编译该实用程序库的特定子集。我预计对于该特定功能子集来说,很多依赖项是不必要的,并且由于技术原因,为这些架构/平台编译整个项目是不可能的。
这个库的迷你版实际上不仅对我有用,对其他人也有用。这就是为什么项目的维护者建议为configure 脚本引入一个--enable-mini 标志。在进行了一些实验之后(我之前从未在 configure.ac 中做过任何事情)我实际上得到了一个构建这个额外的 mini 库的构建工作。
现在重点:有没有一种干净的方法可以排除所有其他项目可执行文件和库的构建?我想要的是一个./configure --enable-mini 调用,它将导致只构建libutilmini.a/libutilmini.la。当然,有些组件可以通过--disable-X 选项禁用,但显然该项目的设置方式并未使 所有 组件成为可选组件。除了构建迷你库似乎没有必要构建其他所有内容之外,整个项目不会为例如 iOS 平台构建。
我真的很想避免在每个子目录中的所有Makefile.ams 中添加if HAVE_MINI [...],特别是因为迷你库对大多数其他开发人员没有用,这似乎不是一个优雅的方法。有没有推荐的方法来实现这些目标?
我知道我可以使用我需要的源代码创建一个新项目并构建它们,但正如我所说,迷你库 对 一些 其他开发人员有用,也是。
【问题讨论】:
-
如果组件不是可选的,它们很可能是强制性的......所以你应该构建它们。
标签: makefile autotools autoconf