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

发布于 2024-08-18 16:37:59 字数 627 浏览 6 评论 0原文

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

.PHONY: tool_1 tool_2 tool_3 tool_4 all tools

all: | tools

tools: | tool_2 tool_3 tool_4

tool_1:
    # commands for tool 1

tool_2: | tool_1
    # commands for tool 2

tool_3: | tool_1
    # commands for tool 3

tool_4: | tool_1
    # commands for tool 4

如果我对这个家伙执行 make -j ,我在这里所做的就是正确的,以确保 tool_1 的命令恰好执行一次,并且之前make 尝试构建任何 tool_[234]

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

My first question (yay!) is about gnumake and parallel builds. Here's a quick example file:

.PHONY: tool_1 tool_2 tool_3 tool_4 all tools

all: | tools

tools: | tool_2 tool_3 tool_4

tool_1:
    # commands for tool 1

tool_2: | tool_1
    # commands for tool 2

tool_3: | tool_1
    # commands for tool 3

tool_4: | tool_1
    # commands for tool 4

If I do make -j on this guy, is what I have here correct to ensure that the commands for tool_1 are executed exactly once, and before make tries to build any of tool_[234]?

What I'm looking for is to have make -j cause tool_1 to be built first, then tool_[234] to be built in parallel, but without executing the commands for tool_1 three times. I hope that makes sense. Thanks for any suggestions or ideas!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

千柳 2024-08-25 16:37:59

make -j 的行为与您在问题中所期望的完全一样。它不会多次产生依赖关系。

管道符 (|) 在依赖项列表中起什么作用?

make -j behaves exactly as you expect in your question. It does not make dependencies multiple times.

What does that pipe (|) character do in your dependency list?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文