dAm*_*m2K 69
要创建标准的"configure"脚本,您需要GNU autoconf.您可能也需要GNU automake和libtool.
有大量的文档和howtos.谷歌的"autoconf automake howto"之类的东西.好的文档在官方手册页面中:
Autoconf将从"configure.ac"文件开始创建配置脚本."Makefile.am"文件将指示automake如何通过configure字符串创建makefile.需要Libtool来简化代码周围的库处理.
您可以手动开始创建configure.ac文件,也可以使用"自动扫描"帮助程序,它可以帮助您为自己创建半自动的东西.
然后,当你准备好了,这个人会做出魔术:
autoreconf -i
Run Code Online (Sandbox Code Playgroud)
ham*_*mSh 22
在linux中有构建流程
还有一个非常好的教程
https://robots.thoughtbot.com/the-magic-behind-configure-make-make-install
有时,软件产品会附带没有配置脚本。寻找 autogen.sh 脚本。它可能会运行:
aclocal || die "aclocal failed"
automake --add-missing --force-missing --copy --foreign || die "automake failed"
autoreconf || die "autoreconf failed"
Run Code Online (Sandbox Code Playgroud)
所有这些答案都是关于autoconf哪个是 GNU 工具。然而,configureshell 脚本早在 GNU 之前就已经出现在 UNIX 中,并且可以手动或以其他方式创建。
配置有什么作用?
\nconfigure只是一个shell脚本。它的工作是生成 makefile 在该特定系统上构建软件所需的配置变量列表。例如,它可能确定包含特定库所需的链接器标志和标头搜索路径。
configure还可以接受用户的选项,例如控制是否在调试或发布模式下构建。
通常configure将这些变量写入一个名为 的文件,config.mk该文件包含在makefile. 它还可能生成config.h带有一些预处理器定义的标头。请注意,configure 只是一个有助于生成此内容的自动化工具。用户始终可以手动编辑config.mk自己(尤其是在晦涩的系统上)。
配置如何检测功能?
\nconfigure使用各种技术来定位依赖关系并检测系统或硬件功能。最不稳定的(但有时是必要的方法)是检查uname操作系统。一种有用的工具pkg-config可以告诉您在哪里可以找到各种已安装的库。
最后,配置脚本总是可以生成小代码片段,然后尝试编译它们以查看某个功能是否可用。
\n乔·尼尔森(Joe Nelson)有一篇很棒的文章,其中每个想法都有示例。
\n我应该编写自己的配置还是使用 autoconf?
\n大多数程序只需要检测 1 或 2 个小东西即可运行。我认为在这些情况下编写配置脚本是有意义的,而不是试图找出自动工具这一庞大软件的极端情况。如果您生产一个简单的产品,config.mk它总是可以手动修复,并且各种系统的用户将有助于获得您的configure正常工作。
对于更复杂的依赖关系,autoconf可能很有用。
为了对各方公平,让我们将文档中提出的论点autoconf联系起来:
\n\nAutoconf 的主要目标是让用户\xe2\x80\x99 的生活更轻松;让维护者\xe2\x80\x99的生活更轻松只是次要目标。
\n
\n\nAutoconf 在其目标方面非常成功\xe2\x80\x94 对 Autoconf 列表的大多数抱怨都是关于编写 Autoconf 输入的困难,而不是最终配置的行为。即使不\xe2\x80\x99t 使用 Autoconf 的软件包通常也会提供一个配置脚本,而对这些替代的自制脚本最常见的抱怨是它们无法满足一个或多个 GNU 编码标准(请参阅《配置》中的配置)。 GNU 编码标准)是用户期望从 Autoconf 生成的配置脚本中获得的。
\n
总结一下:
\nif macOS { use mac commands } else { use linux commands },而不是if gnuTools { use gnu commands } else { use bsd/posix commands }.您必须确定这对您是否重要。
\n| 归档时间: |
|
| 查看次数: |
47765 次 |
| 最近记录: |