2011-02-04 52 views
0

我有这个Makefile代码:如何拆分Makefile中使用的类似于路径名的字符串?

%.spf: 
    @echo [email protected]; 
    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脚本,需要在[email protected]并做内壳通话?

回答

1

您真的需要变量中的路径组件吗?或者您只需要将它们提供给runMe.sh split?如果是后者,那么只需要sedtr(或只是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 [email protected] 
     runMe.sh `echo $X | sed 's:\.spf$$::' | tr '/' ' '` 

如果你死心塌地在Perl那么你可以这样做很容易将sedtr转换成Perl。

+0

我只是将东西管入perl中并调用另一个shell – Gordon 2011-02-08 16:07:35

1

然而,这很糟糕,您可能对组件1到4以及notdir为基名称做了dir的嵌套调用,并且可能使用模式匹配剥离最终斜杠。