Возможно ли иметь нечувствительные к регистру цели с помощью GNU make?

Можно ли создать make-файл так, чтобы

make program_name

дает тот же результат, что и

make PROGRAM_NAME

?

Я знаю, что могу сделать следующее в make-файле

program_name : PROGRAM_NAME

но я не знаю, есть ли способ упростить это для нескольких целей. У нас около 50 или около того целей.


person Chance    schedule 27.09.2011    source источник
comment
GNU-make v.4.2.90 в Windows обрабатывает цели без учета регистра. Я думаю, что так было всегда. Что-то связанное с '-D HAVE_CASE_INSENSITIVE_FS'   -  person G.Vanem    schedule 02.08.2018


Ответы (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:]`
person Beta    schedule 27.09.2011
comment
Спасибо, это, кажется, работает по большей части. Единственная проблема заключается в том, что если у меня есть каталог с именем имя_программы/, где я вызываю make, он не работает. Но будет ли это, если я наберу Program_nAme или что-то подобное, или если я введу имя, которое не является каталогом? Любые идеи о том, как я могу игнорировать имена каталогов? - person Chance; 27.09.2011
comment
@ Шанс, это можно сделать, но это некрасиво. Если таких каталогов немного, я бы предложил добавить program_name: PROGRAM_NAME. - person Beta; 28.09.2011