有些要求添加到包装配方中并不自然。例如,假设你在柯南有一个cmake/3.4 包。您是否将它作为需求添加到zlib包中,以便它将首先安装cmake来构建zlib?
简而言之:
- 只有当您需要从源代码构建包时才需要这些要求,但是如果二进制包已经存在,您就不想安装或检索它们。
- 这些可以是开发工具、编译器、构建系统、代码分析器、测试库等。
- 它们可以与包的创建非常正交。使用CMake 3.4 、 3.5 或 3.6 构建zlib并不重要。只要CMakeLists.txt兼容,它将产生相同的最终包。
- 您不希望添加许多不同的版本 (如CMake的版本) 来使用它们来构建包。您希望轻松更改需求,而无需编辑zlib包配方。
- 当创建像zlib这样的包时,其中一些甚至可能没有被考虑在内,比如将它交叉编译到安卓系统 (安卓工具链也是一个构建要求)。
为了解决这些需求,柯南实施了build_requires。