问题标签 [bsdmake]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
build - bmake的优点
除了 bmake 是 GNU make 的 BSD 等价物这一事实之外,我无法清楚地理解它相对于 GNU make 的优势。谁能帮我?我只能找到一个有点帮助的资源。更多帮助或指针表示赞赏。
c - 如何在 BSD make 中强制出错
有没有办法在不使用目标的情况下强制 BSD makefile 中的错误?我正在寻找类似的东西
这个问题类似于“如何在 gnumake 文件中强制出错”,但适用于 BSD makefile。
makefile - make & gmake 兼容 if else 语句
是否有任何类型的 if/else 语句与 GNU make 和 Berkley make (freeBSD) 兼容?
GNU 制造:
伯克利制造:
shell - 如何在 Makefile 中定义子程序
我正在研究一个Makefile
带有¹收据的文件,该收据使用 M4 生成一些文件。它使用一些复杂的外壳结构来计算必须传递给 M4 的宏值。如何组织代码以避免以下示例中显示的冗余声明?
¹其实很多!
debian - 如何准备使用 `bmake` 构建的 Debian 软件包
我正在将一些软件移植到 Debian/Jessie,它使用BSD 上常见bmake
的版本作为构建系统。make
所以安装过程是
除了使用 ofbmake
而不是make
,它非常规范。我应该使用哪种包装方法?Debian 上有几个包准备框架,临时打包者很难关注这一点。
path - 在 BSD Make 中打开路径字符串中的单词列表
我正在准备一个Makefile
TeX文档,我想自定义TEXINPUTS
环境变量,如下:
Makefile
说_
TEXINPUTSPATH
应该在哪里figures:chapter1:chapter2:
。
如何TEXINPUTSPATH
使用TEXINPUTS
BSD Make 进行计算?
shell - 为什么我们用 Makefiles 而不是 shell 脚本来描述构建过程?
备注这是问题“<a href="https://stackoverflow.com/q/26026331">在 Makefile 中单独链接目标文件的目的是什么?”的变体?由 user4076675 采取略有不同的观点。另见相应的META 讨论。
让我们考虑一个 C 项目的经典案例。编译器gcc
能够一步编译和链接程序。然后,我们可以使用 shell 脚本轻松描述构建例程:
但是,用 描述构建过程似乎是惯用的Makefile
,涉及将每个编译单元编译为目标文件并最终链接这些文件的额外步骤。相应的 GNU Makefile 将是:
可以说,第二种解决方案比我们之前编写的简单 shell 脚本更复杂。这也是一个缺点,因为它会使源目录与目标文件混为一谈。那么,为什么我们用 Makefiles 而不是 shell 脚本来描述构建过程呢?在前面的例子中,这似乎是一个无用的并发症。
makefile - 如何在 GNU Make 中以编程方式定义目标?
我不知道有任何方法可以在 GNU Make 中以编程方式定义目标。这怎么可能?
有时可以使用替代方法。然而,在 Makefile 中以编程方式定义目标的能力对于使用make
. 在 FreeBSD 的构建系统或 Makefile 库(如BSD Owl )中可以找到复杂生产规则的示例
shell 脚本和 Makefile 之间的主要区别是:
在 Makefile 中,程序的状态由命令行和文件系统给出,因此可以在作业中断后恢复作业。当然,这需要正确编写 Makefile,但即使这相当困难,也比使用 shell 脚本实现类似效果要容易得多。
在 Makefile 中,用建议装饰过程或用钩子装饰过程非常容易,而这在 shell 脚本中基本上是不可能的。
例如,一个非常简单且有用的模式如下:
这将目标呈现build
为三个目标的组合,一个包含实际指令do-build
,另外两个是钩子,在之前和之后执行do-build
。许多为 BSD Make 编写的构建系统都使用这种模式,顺便说一句,它允许对目标进行编程定义,因此可以批量编写:
块引入的条件.if/.endif
使用户能够使用它自己的 any 定义${_target}
。
GNU Make 的那个片段的翻译是什么?
makefile - GNU make 等同于 BSD make 的 $(var:Q)?
BSD make 有一个:Q
变量扩展修饰符,在FreeBSD make 手册页中记录如下:
如果 variablevar
具有 value a b\c"d'e$f
,则$(var:Q)
扩展为a\ b\\c\"d\'e\$f
(或等效的)。这对于将字符串传递给 shell 很有用,而不必担心 shell 会解释任何特殊字符。
GNU make 有等价物吗?还是我必须自己转义特殊字符?
makefile - 使用 BSD 的 make 捕获目标
在 BSD Makefile 中,是否可以定义一个包罗万象的目标?我正在寻找 GNU 等价物:
我希望预处理器拥有足够的魔力来动态定义目标,但不知道如何做到这一点。所有局部变量,例如.TARGET
,仅在目标范围内有效,而在全局范围内无效。