我想知道在 BSD 中构建软件的首选方式是什么,以及他们是否正在积极使用并鼓励使用 GNU 自动工具。
我在以下位置找到了有关 GNU autoconf 的部分OpenBSD 手册:
autoconf 是一个 GNU 工具,旨在帮助编写可移植程序。它通常与 automake(可移植 makefile)和 libtool(可移植共享库)一起使用。
这些工具并不能很好地工作,并且常常在将软件移植到 OpenBSD 时带来特定的挑战。
这似乎不太令人鼓舞。 OpenBSD 有自己的类似自动工具的程序吗?您应该自己编写配置脚本吗?我看到例如 OpenSSH是使用自动配置。
FreeBSD 有一个中立部分手册,但它仍然在“特殊注意事项”部分:
各种 GNU 自动工具提供了一种抽象机制,用于在各种操作系统和机器体系结构上构建软件。 [...]
答案1
通常,如果您的目标是特定的 BSD 版本,您将使用该 BSD make
(有时称为bmake
、bsdmake
或pmake
)。它为您想要构建的特定类型的目标提供了各种预定义的规则集。
例如,在 NetBSD 上bsd.prog.mk
通常用于构建程序;您只需声明程序的名称和源文件,它就会自动调用具有正确设置的编译器和链接器。这还允许您的程序集成到build.sh
(从源代码构建整个操作系统的 NetBSD 程序),因为它会自动获取 DESTDIR 和交叉编译设置等内容,而无需您执行任何事物特别的。还有类似的规则文件用于建库等等。
在任何地方使用它的主要障碍是它似乎非常不可移植。也可以看看这次讨论关于BSD make的优点和缺点。
答案2
答案3
不确定是否有任何“官方 BSD 首选”方法,但我的首选方法是 cmake。虽然它的名称具有误导性,因为它执行配置步骤并生成 make 文件,但它不会取代 make 或 gmake。它可以生成unix makefile以及xcode、qtcreator、Visual Studio、borland和许多其他项目文件。
Cmake的语法清晰易懂。它还提供了一个 cli 和一个 gui 应用程序,可用于调整配置选项,我认为这比在配置命令后添加项目列表更容易。