Судя по вашим комментариям, вы на самом деле используете OpusMake, а не GNU make.Вы можете найти больше информации об этом на веб-сайте Opus Software, Inc. , а также в этом удобном справочном руководстве .Из этих источников вы можете видеть, что у вас есть пример макроса , использующего макро модификаторы в своем расширении.переменной FOO
, в то время как $(FOO,mod1[,mod2[,...]]])
расширяется до значения FOO
, измененного в соответствии с указанными вами модификаторами.Обратите внимание, что вы можете связать воедино любое количество модификаторов, и они будут применяться в порядке слева направо.
Существует множество возможных модификаторов, но в вашем примере специально используются два:
- Модификатор
F
, что означает «использовать только конечный компонент пути каждого имени пути в значении переменной» - Модификатор
>str
, что означает «добавлять текст str
к каждому пробелу»слово в значении ".
Вот краткий пример:
FOO=abc/def ghi/jkl
BAR=$(FOO,F)
BAZ=$(FOO,>.txt)
BOO=$(FOO,F,>.txt)
BAR
будет иметь значение def jkl
(т. Е. Только часть имени файла каждого пути). BAZ
будет иметь значение abc/def.txt ghi/jkl.txt
(т. Е. Добавлять .txt к каждому разделенному пробелами слову в значении) BOO
будет иметь значение def.txt jkl.txt
(т.е. первоевзять только часть имени файла каждого пути, а затем добавить .txt к каждому)