我想编写具有依赖项的开源软件。我拥有 C/C++ 技能和最低限度的 makefile 知识。但我对编码这样的./configure && make
东西以及如何正确包含对其他库的依赖关系感到好奇。
哪里可以找到简单易懂的教程,学起来会不会很困难?
答案1
我不认为配置或制作很难学。然而,它们很复杂,因此学习起来可能很棘手——尤其是通过实验。例如,make 要求构建目标的命令严格使用制表符缩进,在许多情况下很难将其与空格区分开。
这是一个涵盖这两个(以及更多)的页面:http://autotoolset.sourceforge.net/tutorial.html#Compiling-with-Makefiles。
还有一个关于 GNU 配置标准的页面:http://www.gnu.org/prep/standards/html_node/Configuration.html。
请注意,这autoconf
是用于创建配置脚本的工具;当然,您可以自行开发自己的配置脚本,但autoconf
会获得标准类型的脚本,并且应该节省大量编程工作。
答案2
很多都是用 完成的autoconf
。我没有特别推荐的教程(除了官方文档之外),但您将需要一个教程,而这正是您想要寻找的。 “Autoconf”通俗地指的是包括“automake”在内的一套工具。
我已经有一段时间没有这样做了,但我会尝试从我的笔记中勾画出整个过程:
对于每个源目录(不要将源代码放在顶层,而是将它们放在子目录中),您需要创建一个
Makefile.am
;这遵循普通 makefile 的规则,但不包括编译目标,而是按照特定于 autoconf 进程的命名方案定义一些目标和变量。这将由 处理automake
。在顶层,您需要创建一个
configure.ac
文件。该autoscan
工具可以为您完成此操作,然后您可以对其进行调整。然后,您需要从顶级目录开始依次运行:
aclocal
、automake -ac
、autoheader
(可能还需要automake -ac
再次运行),然后是autoconf
。这些都有解释其用途的手册页。
瞧!您的包裹已经准备好了。
学习它是一件很难的事情吗?
绝对是乏味我不会说它超级简单,不。如果您的项目很小并且仅针对特定平台,您可以编写一个自己的依赖项检查脚本,该脚本可以从 makefile 运行。