Как разделить строку, похожую на путь, для использования в Makefile? - PullRequest
0 голосов
/ 04 февраля 2011

У меня есть этот код Makefile:

%.spf:
    @echo $@;
    runMe.sh $1 $2 $3 $4 $5;

Примером значения %.spf будет:

ros_apple/bananas_go_while_197815:123.0/monkey_110_worst_forever/thestar.spf

Как бы я мог извлечь аргументы имени файла в переменные?

$1 = ros_apple
$2 = bananas_go_while_197815:123.0
$3 = worst
$4 = 110
$5 = thestar

Можно ли остаться в Makefile или мне нужно создать какой-нибудь Perl-скрипт, который принимает $@ и вызывает ли оболочка внутри?

Ответы [ 2 ]

1 голос
/ 05 февраля 2011

Действительно ли вам нужны компоненты пути в переменной или вам просто нужно предложить их для runMe.sh split? Если последнее, то вы можете сделать это с помощью sed и tr (или просто sed). Например, говоря make all с этим:

X=ros_apple/bananas_go_while_197815:123.0/monkey_110_worst_forever/thestar.spf
all:
        @echo `echo $X | sed 's:\.spf$$::' | tr '/' ' '`

производит:

ros_apple bananas_go_while_197815:123.0 monkey_110_worst_forever thestar

Так что, возможно, попробуйте это:

%.spf:
        @echo $@
        runMe.sh `echo $X | sed 's:\.spf$$::' | tr '/' ' '`

Если вы намерены делать это в Perl, тогда вы можете довольно легко конвертировать sed и tr в Perl.

1 голос
/ 04 февраля 2011

Каким бы уродливым это ни было, вы, вероятно, можете делать вложенные вызовы dir для компонентов с 1 по 4 и notdir для базового имени и, возможно, использовать сопоставление с шаблоном для удаления окончательного слэша.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...