在 gnu make 中使用 for 循环构建多个目标(仅符号定义发生变化)

发布于 2024-12-06 16:35:25 字数 285 浏览 1 评论 0原文

我需要从同一组源文件构建 4 个目标。 唯一改变的是编译时的几个符号定义(-D DEBUG_OUTPUT、-D TIME_OUTPUT),

我如何在 GNU makefile 中实现这一点?

我想运行 gnu make 'for 循环' 并每次重新声明 $(SYMBOLS) 和 $(TARGETNAME),然后从 for 循环中运行 make $(TARGETNAME) 。

这可能吗? 有没有更好的方法(最好使用 gnu make 而不是 automake,或其他一些变体)

谢谢, 纳斯

i need to build 4 targets from the same set of source files.
The only thing that changes are a couple of symbol definitios at compile time (-D DEBUG_OUTPUT, -D TIME_OUTPUT)

how can I accomplish that in a GNU makefile?

I thought of running a gnu make 'for loop' and re-declare the $(SYMBOLS) and $(TARGETNAME) each time, then run make $(TARGETNAME) from within the for loop.

Is that possible?
Is there a better way (preferrably using gnu make and not automake, or some other variant)

Thank you,
nass

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

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

发布评论

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

评论(1

腹黑女流氓 2024-12-13 16:35:25

这个怎么样:

foo: DEBUG_OUTPUT=yes
foo: TIME_OUTPUT=2

bar: DEBUG_OUTPUT=no
bar: TIME_OUTPUT=3

baz: DEBUG_OUTPUT=maybe
baz: TIME_OUTPUT=5

qux: DEBUG_OUTPUT=dunno
qux: TIME_OUTPUT=7

TARGETS = foo bar baz qux

all: $(TARGETS)

$(TARGETS): $(SOURCE_FILES)
    @echo compile $^ into $@ using $(DEBUG_OUTPUT) and $(TIME_OUTPUT)

How about this:

foo: DEBUG_OUTPUT=yes
foo: TIME_OUTPUT=2

bar: DEBUG_OUTPUT=no
bar: TIME_OUTPUT=3

baz: DEBUG_OUTPUT=maybe
baz: TIME_OUTPUT=5

qux: DEBUG_OUTPUT=dunno
qux: TIME_OUTPUT=7

TARGETS = foo bar baz qux

all: $(TARGETS)

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