问题标签 [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.

0 投票
2 回答
1290 浏览

scheduling - GNU make 中的互斥作业调度?

使用 GNU make,是否可以在使用“--jobs”选项时创建一组永远不会同时安排的目标?

背景:

为了使这更具体一点,请考虑以下形式的生成文件

我需要做的主要事情是确保 e1、e2 和 e3 永远不会同时被处理,因为它们在资源有限的嵌入式设备上做一些工作。如果其中多个同时执行,它们会崩溃。p1、p2 和 p3 可以与任何东西并行执行,包括任何 e* 作业。

请注意,实际的 makefile 有几千个目标,其依赖关系树大约有 10 级深,所以我希望有一种方法可以做到这一点,(a)不需要连续运行 make 并且(b)保留的好处在生成文件中编码依赖树。

0 投票
3 回答
7998 浏览

makefile - 为什么 GNU make 删除文件

我有一个用于运行测试的略显老套的 makefile:

它有效,但它使 Make 做一些我以前从未见过的事情。我的测试目前已损坏,并导致总线错误。Make 给出以下输出:

我对最后一行很好奇。我以前从未见过Make这样做。为什么Make会删除已编译的测试?

注意:我对这个示例进行了大量编辑以使其更简单。我可能引入了一些错误。

0 投票
6 回答
4663 浏览

windows - 将 GNUMake 与包含空格的文件名一起使用的最可靠方法是什么?

我想使用 GNUMake 运行基于规则的 makefile,它在目录结构中(在 Windows 文件系统上)构建一组 C 文件。

根目录、一些子目录和一些文件包含空格。

示例文件:"C:\Documents and Settings\<username>\My Documents\Test Dir\Build Me.c"

当文件路径包含空格时,GNUMake 并不能真正工作。我已经阅读了解决此问题的可能方法(从我的文件名中删除空格,使用 8.3 格式,用?or替换空格\\等),但它们都不是完美的(或者它们是完美的吗?)

有没有灵丹妙药可以解决这个问题?

顺便说一句,我坚持使用 GNUMake,我不能使用不同的 make 工具。

0 投票
8 回答
16651 浏览

linux - 当我们可以编写自己的 makefile 时,为什么还要使用像 Autotools 这样的构建工具?

最近,我将我的开发环境从 Windows 切换到了 Linux。到目前为止,我只使用 Visual Studio 进行 C++ 开发,所以很多概念,比如makeAutotools对我来说都是新的。我已经阅读了 GNU makefile 文档并且对它有了几乎一个想法。但我对 Autotools 有点困惑。

据我所知,makefile 用于简化构建过程。

  1. 为什么我们需要像Autotools这样的工具来创建 makefile?由于所有人都知道如何创建生成文件,因此我没有真正使用 Autotools。
  2. 标准是什么?我们需要使用这样的工具还是只需要手写的 makefile 就可以了?
0 投票
2 回答
2788 浏览

c - GNU make %-style 模式规则的可移植等价物

我正在按照“使用 Autotools 检查”页面上的说明来尝试在(当前)小型 C 项目中构建对单元测试的支持。虽然我使用的是Cgreen而不是Check

我在执行第 9 步时遇到了问题,这导致 automake 发出关于使用 `%' 样式的模式规则作为 GNU make 扩展的警告。

具体的制作规则是:

我想知道是否有一种等效的方法来指定此规则,它不依赖于 gnu make 扩展。

0 投票
1 回答
1237 浏览

makefile - 条件测试中的自动变量:GNU Make

我有点卡在这里。我们有两个 makefile(我无法更改的要求)

  • defs.mk:它包含源文件名和它们的额外编译标志(除了标准标志),例如:
  • Makefile: 它包含所有规则。

现在我想添加一个工具,以便我可以定义文件特定的标志(和可选的文件特定的调试标志),如下所示:

但这不起作用,因为条件不支持自动变量的扩展。还有其他方法吗?

0 投票
1 回答
490 浏览

makefile - 如何抑制makefile中的回声?

我在 Makefile 中有以下 PHONY 目标

当我运行目标时,它会显示它正在执行的命令

提示>进行安装

输出是

我想要的输出

0 投票
6 回答
25242 浏览

c++ - GCC 构建问题 (#include_next limits.h)

当我尝试

我的 Ubuntu 机器上的中间件我得到了这个

这是limits.h:125周围的内容:

我试过设置

(这是我在我的系统上找到另一个 limits.h 的地方)。我已经安装了 libc6-dev,会不会是它的 limits.h 被另一个包覆盖了?我需要另一个 -dev 包吗?或者是否需要环境变量;也许这可以通过其他方式规避?

0 投票
4 回答
3801 浏览

makefile - 具有许多目标目录的 GNU make

我必须将许多 HTML 文件的生成集成到现有的Makefile. 问题是 HTML 文件需要驻留在许多不同的目录中。我的想法是编写一个隐式规则,将源文件(*.st)转换为相应的html文件

和一个依赖于所有 html 文件的规则

如果 HTML 文件不在 builddir 中,则make找不到隐式规则:*** No rule to make target. 如果我像这样更改隐式规则

找到了,但是我必须对项目中的几乎每个文件都有一个隐式规则。根据GNU 手册中的隐式规则搜索算法make,规则搜索的工作方式如下:

  1. 将整个目标名称t拆分为目录部分,称为d,其余部分称为n。例如,如果tsrc/foo.o,则dsrc/,并且nfoo.o
  2. 列出所有目标匹配tn的模式规则。如果目标模式包含斜线,则与t匹配;否则,反对n

为什么没有找到隐含规则,假设make使用 GNU,什么是最优雅的解决方案?

这是我的精简版Makefile

0 投票
6 回答
9686 浏览

makefile - 如何在 GNU make 中捕获错误和中断?

我想知道是否有一种方法可以trap在 GNU中实现make,类似于内置的BASH

如果用户按下CTRL-C,或者如果make它本身失败(非零退出),我想调用一个特定的目标或宏。