问题标签 [gnu-make]
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.
scheduling - GNU make 中的互斥作业调度?
使用 GNU make,是否可以在使用“--jobs”选项时创建一组永远不会同时安排的目标?
背景:
为了使这更具体一点,请考虑以下形式的生成文件
我需要做的主要事情是确保 e1、e2 和 e3 永远不会同时被处理,因为它们在资源有限的嵌入式设备上做一些工作。如果其中多个同时执行,它们会崩溃。p1、p2 和 p3 可以与任何东西并行执行,包括任何 e* 作业。
请注意,实际的 makefile 有几千个目标,其依赖关系树大约有 10 级深,所以我希望有一种方法可以做到这一点,(a)不需要连续运行 make 并且(b)保留的好处在生成文件中编码依赖树。
makefile - 为什么 GNU make 删除文件
我有一个用于运行测试的略显老套的 makefile:
它有效,但它使 Make 做一些我以前从未见过的事情。我的测试目前已损坏,并导致总线错误。Make 给出以下输出:
我对最后一行很好奇。我以前从未见过Make这样做。为什么Make会删除已编译的测试?
注意:我对这个示例进行了大量编辑以使其更简单。我可能引入了一些错误。
windows - 将 GNUMake 与包含空格的文件名一起使用的最可靠方法是什么?
我想使用 GNUMake 运行基于规则的 makefile,它在目录结构中(在 Windows 文件系统上)构建一组 C 文件。
根目录、一些子目录和一些文件包含空格。
示例文件:"C:\Documents and Settings\<username>\My Documents\Test Dir\Build Me.c"
当文件路径包含空格时,GNUMake 并不能真正工作。我已经阅读了解决此问题的可能方法(从我的文件名中删除空格,使用 8.3 格式,用?
or替换空格\\
等),但它们都不是完美的(或者它们是完美的吗?)
有没有灵丹妙药可以解决这个问题?
顺便说一句,我坚持使用 GNUMake,我不能使用不同的 make 工具。
c - GNU make %-style 模式规则的可移植等价物
我正在按照“使用 Autotools 检查”页面上的说明来尝试在(当前)小型 C 项目中构建对单元测试的支持。虽然我使用的是Cgreen而不是Check。
我在执行第 9 步时遇到了问题,这导致 automake 发出关于使用 `%' 样式的模式规则作为 GNU make 扩展的警告。
具体的制作规则是:
我想知道是否有一种等效的方法来指定此规则,它不依赖于 gnu make 扩展。
makefile - 条件测试中的自动变量:GNU Make
我有点卡在这里。我们有两个 makefile(我无法更改的要求)
- defs.mk:它包含源文件名和它们的额外编译标志(除了标准标志),例如:
Makefile
: 它包含所有规则。
现在我想添加一个工具,以便我可以定义文件特定的标志(和可选的文件特定的调试标志),如下所示:
但这不起作用,因为条件不支持自动变量的扩展。还有其他方法吗?
makefile - 如何抑制makefile中的回声?
我在 Makefile 中有以下 PHONY 目标
当我运行目标时,它会显示它正在执行的命令
提示>进行安装
输出是
我想要的输出
c++ - GCC 构建问题 (#include_next limits.h)
当我尝试
我的 Ubuntu 机器上的中间件我得到了这个
这是limits.h:125周围的内容:
我试过设置
(这是我在我的系统上找到另一个 limits.h 的地方)。我已经安装了 libc6-dev,会不会是它的 limits.h 被另一个包覆盖了?我需要另一个 -dev 包吗?或者是否需要环境变量;也许这可以通过其他方式规避?
makefile - 具有许多目标目录的 GNU make
我必须将许多 HTML 文件的生成集成到现有的Makefile
. 问题是 HTML 文件需要驻留在许多不同的目录中。我的想法是编写一个隐式规则,将源文件(*.st)转换为相应的html文件
和一个依赖于所有 html 文件的规则
如果 HTML 文件不在 builddir 中,则make找不到隐式规则:*** No rule to make target
. 如果我像这样更改隐式规则
找到了,但是我必须对项目中的几乎每个文件都有一个隐式规则。根据GNU 手册中的隐式规则搜索算法make
,规则搜索的工作方式如下:
- 将整个目标名称t拆分为目录部分,称为d,其余部分称为n。例如,如果t是
src/foo.o
,则d是src/
,并且n是foo.o
。- 列出所有目标匹配t或n的模式规则。如果目标模式包含斜线,则与t匹配;否则,反对n。
为什么没有找到隐含规则,假设make
使用 GNU,什么是最优雅的解决方案?
这是我的精简版Makefile
:
makefile - 如何在 GNU make 中捕获错误和中断?
我想知道是否有一种方法可以trap
在 GNU中实现make
,类似于内置的BASH
?
如果用户按下CTRL-C
,或者如果make
它本身失败(非零退出),我想调用一个特定的目标或宏。