在make文件中使用sed进行条件重命名

在make文件中使用sed进行条件重命名,sed,makefile,gnu-make,conditional-statements,Sed,Makefile,Gnu Make,Conditional Statements,有没有一种方法可以在makefile中使用sed在makefile中有条件地重命名泛型文件?例如,如果我有一个文件generic.sh,并运行一个生成foo和bar目录的makefile。然后我想将generic.sh重命名为foo.sh和bar.sh,具体取决于generic.sh将进入的目录。我想开始走正确的道路,因为到目前为止我已经走到了死胡同。这里有一个makefile,可以满足您的要求: all: foo/foo.sh bar/bar.sh foo/foo.sh: mkdir

有没有一种方法可以在makefile中使用sed在makefile中有条件地重命名泛型文件?例如,如果我有一个文件
generic.sh
,并运行一个生成
foo和bar目录的makefile
。然后我想将
generic.sh
重命名为
foo.sh
bar.sh
,具体取决于
generic.sh
将进入的目录。我想开始走正确的道路,因为到目前为止我已经走到了死胡同。

这里有一个makefile,可以满足您的要求:

all: foo/foo.sh bar/bar.sh

foo/foo.sh:
    mkdir -p foo
    cp generic.sh $@

bar/bar.sh:
    mkdir -p bar
    cp generic.sh $@

粗糙但有效;当您准备好时,还可以进行进一步的改进。

是的,您可以使用sed,但这似乎有些过头了。是的,您可以在makefile中有条件地执行操作。但不清楚你想要实现什么。您希望
制作脚印
制作巴丁
并分别显示
foo/foo.sh
bar/bar.sh
,是吗?make文件将创建目录
/bar
/foo
,然后我想将我的generic.sh复制到目录中,但重命名为
nameofdir.sh
。你可能应该将
generic.sh
列为这些目标的先决条件。@madcascitist:正如我所说,粗糙但有效,进一步改进。尽量保持简单,我明白了。我只是认为,如果没有先决条件,这个makefile是非常无用的。您不妨编写一个shell脚本;它只有4行长。YMMV,但我将其归类为“最低限度”。干杯@谢谢你,那很有用。我想要一个开始,而你提供了。