如何根据 MA​​KEFLAG 设置 makefile 中变量的值?

发布于 2024-12-09 06:54:13 字数 282 浏览 0 评论 0原文

我的 makefile 正在编译我的程序以进行调试。我的意思是它将 -g -D DEBUG 传递给编译器。我希望能够为 not debug 传递 -nd 或为 p 传递 -p 生产,从而从编译器中删除调试标志。为此,我需要某种方法将其放入 make 语法中:“如果 MAKEFLAGS 不是 nd,则将 CFLAGS 设置为 -g -D DEBUG 否则离开它是空的”

我该怎么做?

My makefile is compiling my program for debugging. By that I mean that it passes -g -D DEBUG to the compiler. I want to be able to pass -nd for not debug or -p for production to make thus removing the debug flags from the compiler. To do this I'd need some way of putting this into make syntax: "If MAKEFLAGS is not nd then set CFLAGS to -g -D DEBUG otherwise leave it empty"

How can I do this?

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

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

发布评论

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

评论(1

雪若未夕 2024-12-16 06:54:13

如果您只关心 -nd,则可以这样做:

ifeq (,$(findstring nd,$(MAKEFLAGS)))
FOO = -g -D DEBUG
endif

如果您还关心 -p,则它不太干净:

FOO = -g -D DEBUG
ifneq (,$(findstring nd,$(MAKEFLAGS)))
FOO =
endif

ifneq (,$(findstring p,$(MAKEFLAGS)))
FOO =
endif

If all you care about is -nd, this will do it:

ifeq (,$(findstring nd,$(MAKEFLAGS)))
FOO = -g -D DEBUG
endif

If you also care about -p, it's not quite as clean:

FOO = -g -D DEBUG
ifneq (,$(findstring nd,$(MAKEFLAGS)))
FOO =
endif

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