bmake 的优点

2023-11-24

除了 bmake 是 GNU make 的 BSD 等价物这一事实之外,我无法清楚地理解它相对于 GNU make 的优势。谁能帮我?我只能找到一个resource这有点帮助。感谢更多帮助或指示。


BSD make 和 GNU make 都是原始 AT&T make 的免费替代品。主要区别在于高级功能具有不同的语法。以下是如何将 shell 命令的输出放入 BSD make 的变量中:

# BSD make
TODAY != date +%Y-%m-%d

在 GNU make 中:

# GNU make
TODAY = $(shell date +%Y-%m-%d)

只要有人写$(shell ...)在 Makefile 中,它需要 GNU make。由于语法不同,有些包需要 GNU make 来构建,有些则需要 BSD make。

BSD make 的诞生始于PMake, 短缺平行制造。它的作者 Adam de Boor 在中描述了 PMake制作——教程。它的优点是并行运行作业的新能力,如make -j 3。这种并行模式通过在单个 shell 中运行每个目标的所有命令(而不是在每行一个 shell 中)来破坏兼容性。 GNU make 还有并行模式-j,每行保留一个 shell。NetBSD 制作(1)现在有make -B -j 3每行一个 shell 进行并行模式。OpenBSD 制作(1)现在总是采用并行模式,每行一个 shell。

4.3BSD-Reno 包含 PMake 作为make和 bsd.*.mk 包含文件。这些包含文件是 BSD make 的最佳功能。4.3BSD-Tahoe 中的 src/bin/sed/Makefile(4.3BSD-Reno 之前的版本)定义了几个目标,例如 clean、depend、install 等。4.3BSD-Reno 中的 src/usr.bin/sed/Makefile只有四行非空行:

#   @(#)Makefile    4.6 (Berkeley) 5/11/90

PROG=   sed
SRCS=   sed0.c sed1.c

.include <bsd.prog.mk>

Here bsd 程序自动设置OBJS to sed0.o sed1.o,定义一个 sed 目标来链接 sed 与这些对象,定义其他目标,如 clean、depend、install 和 Causesmake install安装 sed 及其手册页 sed.1。还有bsd.lib.mk用于建立图书馆。

当使用bsd.*.mk时,每个Makefile只能构建一个程序或库。要构建另一个 Makefile,另一个目录中必须有第二个 Makefile。所以OpenBSD 中的 src/usr.sbin/smtpd/有六个子目录,其中每个子目录只包含一个Makefile,因为smtpd构建了六个程序。

除了 BSD 本身之外,很少使用 bsd.*.mk 来构建任何东西。 BSD 开发人员提供的许多可移植软件包,例如 OpenSSH(来自 OpenBSD)或 mksh(来自 MirBSD),不需要 BSD make,也不使用 bsd.*.mk 文件。

文件bsd 端口.mk是在的中心FreeBSD 端口,为 FreeBSD 构建软件包的系统。 (NetBSD 软件包调用这个文件bsd 软件包.) 该系统在其他脚本语言中具有竞争对手。 Homebrew 使用 Ruby。 MacPort 使用 Tcl。

过去,GNU make 比 BSD make 更可移植。由于 BSD make 是 BSD 的一部分,因此很少在其他系统上找到 BSD make。现在有便携式bmake对于其他系统。这是 NetBSD make 的便携版本。便携式 bmake 最常见的用途是在非 NetBSD 系统上运行 pkgsrc。我在 OS X 上运行 pkgsrc,并由 pkgsrc 引导 bmake。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

bmake 的优点 的相关文章

随机推荐

  • LINQ 可以在 PowerShell 中使用吗?

    我正在尝试在 PowerShell 中使用 LINQ 看起来这应该是完全可能的 因为 PowerShell 是构建在 NET Framework 之上的 但我无法让它工作 例如 当我尝试以下 人为的 代码时 data 0 10 System
  • 如何使用多个 WCF 服务实例强制执行消息队列顺序

    我想创建一个使用 MSMQ 绑定的 WCF 服务 因为该服务要处理大量通知 重要的是 客户端不会被服务阻塞 并且通知按照它们发出的顺序进行处理 因此队列实现也是如此 另一个考虑因素是弹性 我知道我可以对 MSMQ 本身进行集群以使队列更加健
  • Apache Spark:使用文件夹结构来减少分析的运行时间

    我想通过将一个巨大的 csv 文件根据其特征细分为不同的分区来优化 Spark 应用程序的运行时 例如 我有一个包含客户 ID 的列 整数 a 一个包含日期的列 月 年 例如 01 2015 b 以及一个包含产品 ID 的列 整数 c 以及
  • Mockito / Powermockito 模拟私有 void 方法

    我需要使用mockito和powermock模拟一个不带参数的私有void方法 该方法属于一个间谍实例 我知道我需要这样做的事实表明代码很糟糕 但我正在处理一个旧项目 将单元测试从一个测试框架转换为另一个测试框架 如果有人有任何建议 我们将
  • 在 Windows 7 64 位上安装 pycuda-2013.1.1

    仅供参考 我有 64 位版本的 Python 2 7 和 我跟着pycuda安装说明安装pycuda 我运行以下脚本没有任何问题 import pycuda driver as cuda import pycuda autoinit fro
  • 在 Rmarkdown HTML 输出中禁止来自 RStan 的运行消息

    以下是我的 r 代码 r message FALSE warning FALSE cache 0 eval TRUE error FALSE stan m1 lt rethinking map2stan alist y dbinom n p
  • 如何创建紧凑型材

    我在谷歌上搜索找到一种在 Java 1 8 中创建紧凑配置文件的方法 是否可以创建紧凑配置文件 因为Here说它仅适用于嵌入式版本 简短回答 JEP 161说配置文件必须在 Java 8 中 确实如此 要创建它们 请使用make profi
  • 尝试使用 numpy 向量化迭代计算

    我试图通过使用 numpy 中的向量化形式来使某些代码更有效 让我给你举个例子 这样你就明白我的意思了 给出以下代码 a np zeros 4 4 a 0 1 2 3 4 for i in range len a 1 a i 1 2 a i
  • 通过 Rails 迁移添加数据库列并基于另一列填充它

    我正在编写一个迁移以向表中添加一列 该列的值取决于另外两个现有列的值 最好 最快的方法是什么 目前我有这个 但不确定这是否是最好的方法 因为组表可能非常大 class AddColorToGroup lt ActiveRecord Migr
  • 有效 Cookie 值的明确指南

    我知道还有其他问题 但他们的答案似乎是假设而不是确定的 我有限的理解是cookie值是 分号已用于分隔单个 cookie 中的 cookie 属性 等号用于分隔 cookie 名称和值 冒号用于分隔标头中的多个 cookie 还有其他 特殊
  • Chrome 不缓存图像/js/css

    当 Chrome 加载我的网站时 它会在显示文件之前检查服务器是否有文件的更新版本 图像 Javascript CSS 它从服务器获取 304 因为我从不编辑外部 javascript css 或图像 我想要它做的是显示图像 甚至无需检查服
  • 在 C 和 C++ 中使用浮点转换与浮点后缀有什么区别吗?

    这之间有区别吗 使用浮点文字后缀 float MY FLOAT 3 14159265358979323846264338328f f suffix double MY DOUBLE 3 141592653589793238462643383
  • Bash:无法在管道右侧构建数组

    有人知道为什么这段代码不能按预期工作吗 gt svnTags gt svn ls http plugins svn wordpress org duplicate post tags while read line do slashless
  • 实体框架 4 实体状态未更改触发更新

    我正在使用 EF 4 使用存储过程映射我的实体的所有 CUD 操作 我有两个表 地址和人员 一个人可以有多个与其关联的地址 这是我正在运行的代码 Person person from p in context People where p
  • JavaScriptSerializer - 枚举作为字符串的 JSON 序列化

    我有一堂课 其中包含enum属性 并在使用序列化对象时JavaScriptSerializer 我的 json 结果包含枚举的整数值而不是它的string 姓名 有没有办法让枚举作为string在我的 json 中 无需创建自定义JavaS
  • 当您等待失败的任务时会发生什么

    我有一个理论问题要问你 如果我在另一个任务中等待一个任务的结果 会发生什么 我想知道我现在的系统以后是否还能工作 任务启动并执行一些操作 在某些时候 该任务可能需要另一个任务来处理当前任务本身无法处理的数据 所以我使用await来确保只要他
  • Codeigniter php7 错误

    我在 Codeigniter 2 上有一个网站 当我将服务器版本切换到 PHP7 时 出现以下两个错误 遇到 PHP 错误严重性 通知 消息 仅应通过引用分配变量 文件名 core Controller php 线路编号 51 this g
  • 在 Android 中拨打 911

    我想使用 Android SDK 拨打紧急号码 我正在使用以下代码拨打号码 911 此代码适用于除 911 紧急号码 之外的所有号码 当我使用 911 时 它会显示我不想要的拨号屏幕 是否有任何程序可以在不打开拨号器的情况下拨打 911 或
  • 以编程方式将 Power BI 报表部署到 Power BI 报表服务器并更改连接字符串

    是否有任何方法可以将 Power BI 报表部署到 Power BI 报表服务器 而无需手动复制这些文件 将它们上传到服务器 最后逐个报表地更改每个报表的数据源连接信息 这在每个报表中都不实用客户站点 例如 PowerBI 报告文件 Rep
  • bmake 的优点

    除了 bmake 是 GNU make 的 BSD 等价物这一事实之外 我无法清楚地理解它相对于 GNU make 的优势 谁能帮我 我只能找到一个resource这有点帮助 感谢更多帮助或指示 BSD make 和 GNU make 都是