问题标签 [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 投票
1 回答
532 浏览

shell - 为什么makefile shell的结果与在shell中的结果不同?

使用 GNU makefile 内容:

我得到以下结果:

但是,如果我输入:

我得到结果:

显然,我的 shell 语法并没有像我想的那样做,但我不清楚为什么。

谢谢。

0 投票
1 回答
538 浏览

gnu-make - 如何查看 GNU make 运行的命令?

我正在尝试调试一个复杂的 Makefile。如何让 GNU make 打印它运行的所有命令?我在页面中找不到答案man(使用 -d 标志似乎没有打印出来)。

(这不是回答我的问题的必要信息,但如果您想知道:我在编译基于 NVIDIA CUDA 库的项目时遇到问题。我可以自己编译它,但使用他们的 Makefile 会导致令人讨厌的编译器错误. 我想使用他们提供的 Makefile 来简化打包,并包含他们已经链接的其他包。)

0 投票
4 回答
198803 浏览

makefile - 在规则执行时定义 make 变量

在我的 GNUmakefile 中,我想要一个使用临时目录的规则。例如:

如所写,上述规则在解析规则时创建临时目录。这意味着,即使我不是一直使用 out.tar,也会创建许多临时目录。我想避免我的 /tmp 被未使用的临时目录弄得乱七八糟。

有没有办法使变量仅在触发规则时才被定义,而不是在定义时才被定义?

我的主要想法是将 mktemp 和 tar 转储到 shell 脚本中,但这似乎有点难看。

0 投票
1 回答
645 浏览

c - 调试生成文件

我有一个生成文件,其中包含如下语句:

运行构建后,我收到如下消息:

所以似乎发出的 foreach 命令有问题?由于我是这些makefile的新手,有人可以建议如何调试makefile吗?

0 投票
1 回答
1225 浏览

makefile - 如何在make中匹配vpath后获取绝对路径?

我有一个 makefile,它根据某些属性设置 vpath 并将源文件列表生成到一个变量中。我需要在不编译任何东西的情况下运行makefile(编译实际上由不同的makefile处理),并且只需根据vpath设置查看文件名与哪些真实文件匹配。

0 投票
6 回答
13084 浏览

unix - 在 Makefile 中转义文件名中的冒号

有没有办法让 GNU make 正确处理包含冒号的文件名?

我遇到的具体问题恰好涉及模式规则。这是一个不依赖于剪切和粘贴制表符的简化版本:

将 $(COLON) 替换为文字 : 会产生完全相同的结果。如果没有反斜杠,它会这样做:

0 投票
1 回答
7589 浏览

makefile - 使用 gnumake 和先决条件并行构建

我的第一个问题(耶!)是关于 gnumake 和并行构建的。这是一个简单的示例文件:

如果我make -j对这个人这样做,我在这里是否正确确保命令tool_1只执行一次,然后再make尝试构建任何tool_[234]

我正在寻找的是首先构建的make -j原因tool_1,然后tool_[234]是并行构建,但不执行tool_1三次命令。我希望这是有道理的。感谢您的任何建议或想法!

0 投票
4 回答
56482 浏览

c - 通过命令行附加到 GNU make 变量

我正在使用 GNU-make Makefile 构建具有多个目标( 、 和一些项目特定目标)的 Call项目clean。在调试过程中,我想在不永久编辑 Makefile 的情况下将一些标志附加到单个构建(例如添加调试符号或设置预处理器标志)。

过去,我是按如下方式完成的(使用调试符号示例):

不幸的是,这不是附加到CFLAGS变量,而是清除它并停止编译。CFLAGS有没有一种干净的方法来做到这一点,而无需定义附加到and末尾的某种虚拟变量LDFLAGS

0 投票
5 回答
5404 浏览

build - bmake的优点

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

0 投票
3 回答
4372 浏览

c++ - Makefile 工作 %.c,不工作 %.cpp

我有一组用于构建“大”C 项目的生成文件。我现在正试图在我的 C++ 项目中重用一些,并且遇到了我无法弄清楚的头痛问题。

生成文件看起来像这样

它有点复杂,但它在 C 中所做的是构建 SOURCES 中定义的所有 %.c 文件并将目标文件放在 BUILD_DIR 中。它在 c 中工作得很好,但这不适用于 cpp 文件。我明白了

它就像 VPATH 根本不工作。我试过

但这也不起作用。

令人惊讶的是,将 blue.cpp 重命名为 blue.c 并将 makefile 编辑回 %.c 用法确实有效,它编译得很好。

我在这里疯了吗?