【问题标题】:Is it possible to have case insensitive targets with GNU make?是否可以使用 GNU make 设置不区分大小写的目标?
【发布时间】:2011-11-26 05:11:10
【问题描述】:

是否可以设计一个makefile,以便

make program_name

产生与

相同的结果
make PROGRAM_NAME

?

我知道我可以在 makefile 中执行以下操作

program_name : PROGRAM_NAME

但我不知道是否有办法针对多个目标简化此操作。我们有大约 50 个左右的目标。

【问题讨论】:

  • Windows 上的 GNU-make v.4.2.90 以不区分大小写的方式处理目标。我想从古至今都是如此。与“-D HAVE_CASE_INSENSITIVE_FS”有关

标签: makefile gnu gnu-make


【解决方案1】:

粗鲁但有效:

PROGRAM_NAME:
    @echo do something for $@

ANOTHER_TARGET:
    @echo do something else for $@

YET_ANOTHER:
    @echo and something else for $@

% :
    @$(MAKE) `echo $@ | tr [:lower:] [:upper:]`

【讨论】:

  • 谢谢,这似乎在大多数情况下都有效。唯一的问题是,如果我有一个名为 program_name/ 的目录,我在其中调用 make,它似乎不起作用。但是,如果我键入 Program_nAme 或类似名称,或者如果我键入的名称恰好不是那里的目录,它会出现吗?关于如何忽略目录名称的任何想法?
  • @Chance,它可以做到,但它并不漂亮。如果这样的目录不多,我建议添加program_name: PROGRAM_NAME
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-05
  • 1970-01-01
相关资源
最近更新 更多