在 BSD 中构建软件的首选方法是什么?

在 BSD 中构建软件的首选方法是什么?

我想知道在 BSD 中构建软件的首选方式是什么,以及他们是否正在积极使用并鼓励使用 GNU 自动工具。

我在以下位置找到了有关 GNU autoconf 的部分OpenBSD 手册:

autoconf 是一个 GNU 工具,旨在帮助编写可移植程序。它通常与 automake(可移植 makefile)和 libtool(可移植共享库)一起使用。

这些工具并不能很好地工作,并且常常在将软件移植到 OpenBSD 时带来特定的挑战。

这似乎不太令人鼓舞。 OpenBSD 有自己的类似自动工具的程序吗?您应该自己编写配置脚本吗?我看到例如 OpenSSH使用自动配置。

FreeBSD 有一个中立部分手册,但它仍然在“特殊注意事项”部分:

各种 GNU 自动工具提供了一种抽象机制,用于在各种操作系统和机器体系结构上构建软件。 [...]

答案1

通常,如果您的目标是特定的 BSD 版本,您将使用该 BSD make(有时称为bmakebsdmakepmake)。它为您想要构建的特定类型的目标提供了各种预定义的规则集。

例如,在 NetBSD 上bsd.prog.mk通常用于构建程序;您只需声明程序的名称和源文件,它就会自动调用具有正确设置的编译器和链接器。这还允许您的程序集成到build.sh(从源代码构建整个操作系统的 NetBSD 程序),因为它会自动获取 DESTDIR 和交叉编译设置等内容,而无需您执行任何事物特别的。还有类似的规则文件用于建库等等。

在任何地方使用它的主要障碍是它似乎非常不可移植。也可以看看这次讨论关于BSD make的优点和缺点。

答案2

我发现如果 OpenBSD 在基本系统中使用我的程序之一,它们可能会忽略配置脚本:

但话又说回来,他们可能不会。这取决于谁做了这项工作:

  • 山猫(显然使用了配置脚本,尽管一些补丁删除了配置检查......)

然而,配置脚本在端口区域中是允许的。自从我看到端口维护者仅仅因为不赞成 autoconf 而构建 makefile 以来,已经有一段时间了。

答案3

不确定是否有任何“官方 BSD 首选”方法,但我的首选方法是 cmake。虽然它的名称具有误导性,因为它执行配置步骤并生成 make 文件,但它不会取代 make 或 gmake。它可以生成unix makefile以及xcode、qtcreator、Visual Studio、borland和许多其他项目文件。

Cmake的语法清晰易懂。它还提供了一个 cli 和一个 gui 应用程序,可用于调整配置选项,我认为这比在配置命令后添加项目列表更容易。

相关内容