Makefile 生成具有相同名称但通过两种不同规则的文件

发布于 2024-10-12 11:18:38 字数 157 浏览 1 评论 0原文

我想让 makefile 生成一个具有两种不同规则的文件。一个用于推荐 make aaa,另一个用于 make bbb。 我有两个文件: 1.c 和 2.c 规则 aaa 需要从 1.c 生成的 result.o 而 bbb 需要从 2.c 生成的 result.o

如何做到这一点?

I want to have makefile witch generate one file with two different rules. One for commend make aaa and another for make bbb.
I have two files:
1.c and 2.c
rule aaa need result.o generated from 1.c
and bbb need result.o generated from 2.c

How to do that?

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

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

发布评论

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

评论(1

孤蝉 2024-10-19 11:18:38

来自 GNU Make 文档:

“规则”出现在 makefile 中并且
说明何时以及如何重新确定
文件,称为规则的“目标”
(通常每条规则只有一个)。它
列出了其他文件
目标的“先决条件”,以及
用于创建或更新的“命令”
目标。

也就是说,make rules的目的是生成一些目标,通常某些操作的结果文件 - 可以是一个标记文件信令已执行的步骤或编译中的目标文件。

您想要为 2 个不同的依赖项生成 result.o 目标,这并不完全是 make 的目的。

您可以做的是生成目标 1.o2.o,然后在更高级别中符号链接到 result.o规则。但这意味着规则 aaabbb 必须依赖1.o2。 o 因为它们必须有单独的目标(巧合的是规则的名称)。

From the GNU Make documentation:

A "rule" appears in the makefile and
says when and how to remake certain
files, called the rule's "targets"
(most often only one per rule). It
lists the other files that are the
"prerequisites" of the target, and
"commands" to use to create or update
the target.

That is, the purpose of make rules is to generate some target which usually is the result file from some operation - be it a stamp file signalling that a step has executed or an object file from a compilation.

What you want, generate a result.o target for 2 different dependencies is just not exactly what make is intended to do.

What you can do, is generate targets 1.o and 2.o, which than get symlinked to result.o in a higher-level rule. This means however, that rules aaa and bbb have to depend on 1.o and 2.o as they have to have separate targets (which coincidentally are the rule's names).

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