./configure有什么用处(除了检查依赖项)

时间:2010-01-07 01:51:03

标签: build-process makefile metaprogramming

为什么每个使用makefile的源包都带有./configure脚本,它有什么作用?据我所知,它实际上生成了makefile?

makefile中是否有任何无法完成的内容?

5 个答案:

答案 0 :(得分:2)

configure通常是'autoconf'系统的结果。它可以生成标题,makefile,真的任何东西。 “通常,”因为有些是手工制作的。

这些事情的原因是允许在不同的环境中编译源代码。 Unix / Linux上有许多变体,系统头和库略有不同。配置脚本允许代码自动适应。

答案 1 :(得分:1)

配置步骤是一种元构建。它生成的makefile将适用于您正在运行的特定硬件/分发。例如,它确定C或C ++编译器的名称并将其嵌入到makefile中。

配置步骤还经常采用一组参数,其值可以确定需要链接的库。例如,如果您在启用SSL的情况下编译Apache HTTP,则需要链接更多共享库,而不需要。由于链接是由makefile处理的,因此您需要额外的步骤来创建自定义makefile(而不是要求make命令需要数十个或数百个选项。

答案 2 :(得分:1)

一切都可以在makefile中完成,但是一些构建系统是以其他方式实现的。

我个人不会将configure个文件用于我的项目,但我承认我主要是出口Erlang&基于Python的项目。

答案 3 :(得分:1)

我不认为makefile是一个脚本,我认为它是make实用程序的输入。

configure脚本(顾名思义)配置makefile,包括解析依赖关系。

如果仅从避免自修改代码的想法出发,配置脚本中的内容实际上并不属于makefile。

答案 4 :(得分:1)

重点是autoconf autohdr automake构成了一个集成系统,使得unix上的跨平台构建相对更加顺畅。文档真的很糟糕,有很多可怕的陷阱,但另一方面有很多工作样本

当我第一次遇到这些东西时,我想 - “我可以用一个漂亮干净的makefile做到这一点”并继续以这种方式重新编写源代码。大错。学习编写和编辑configure.ac和makefile.am文件,最后你会很高兴

回答你的问题。配置适用于

  • 是这个平台上可用的函数foo,如果可以,我需要包含和库

  • 让施工人员选择是否需要以简单一致的方式包含功能wizzbang