【问题标题】:How can I set the value of a variable in a makefile depending on a MAKEFLAG?如何根据 MA​​KEFLAG 在生成文件中设置变量的值?
【发布时间】:2011-10-10 20:17:48
【问题描述】:

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

我该怎么做?

【问题讨论】:

  • 不,你的意思是“不是 'nd'”,还是“不包含 'nd' 或 'p'”?
  • MAKEFLAGS 是make内置变量吗?您是指MAKEFLAGS 还是其他一些特定于项目的变量?

标签: if-statement makefile gnu-make


【解决方案1】:

如果你关心的只是-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

【讨论】:

  • $(findstring nd,...) 位也会在 make --warn-undefined-variables 被传递时触发(当使用 $(MAKEFLAGS) 而不是其他一些自定义变量时)。
  • @EtanReisner:好点。我会尝试对其进行防弹,但看起来好像没有多少人对这个问题感兴趣。
  • 这个细节实际上有点烦人,因为手册也弄错了(在第 7.3 节中)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-17
  • 2022-01-10
  • 2022-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多