Makefile 是否可以使用GNU make设置不区分大小写的目标?

Makefile 是否可以使用GNU make设置不区分大小写的目标?,makefile,gnu,gnu-make,Makefile,Gnu,Gnu Make,是否可以设计一个makefile以便 make program_name 产生与相同的结果 make PROGRAM_NAME ? 我知道我可以在makefile中执行以下操作 program_name : PROGRAM_NAME 但我不知道是否有一种方法可以简化多个目标。我们有大约50个目标。粗糙但有效: PROGRAM_NAME: @echo do something for $@ ANOTHER_TARGET: @echo do something else fo

是否可以设计一个makefile以便

make program_name
产生与相同的结果

make PROGRAM_NAME
?

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

program_name : PROGRAM_NAME
但我不知道是否有一种方法可以简化多个目标。我们有大约50个目标。

粗糙但有效:

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\u name:program\u name
。我想从永远都是这样。与'-D HAVE_CASE_INSENSITIVE_FS'有关