Makefile GNU Make“;gsrc/%.v:%.rdl“;文件生成

Makefile GNU Make“;gsrc/%.v:%.rdl“;文件生成,makefile,gnu-make,Makefile,Gnu Make,您好,我目前正在使用GNU Make,我的目标之一如图所示 gsrc/%.v: %.rdl run tool on the .rdl 该工具生成一个gsrc/example.v、example.vh和一个example.xml文件(通常放在我当前的工作目录中)。示例.v文件在我假设的目标定义之外被移动到gsrc目录中,我试图找出将生成的所有文件移动到gsrc目录的方法 我想首先,gsrc/%.v是否会导致生成的文件移动到gsrc目录,如果是这样,我如何使用make将

您好,我目前正在使用GNU Make,我的目标之一如图所示

    gsrc/%.v: %.rdl
          run tool on the .rdl
该工具生成一个gsrc/example.v、example.vh和一个example.xml文件(通常放在我当前的工作目录中)。示例.v文件在我假设的目标定义之外被移动到gsrc目录中,我试图找出将生成的所有文件移动到gsrc目录的方法

我想首先,gsrc/%.v是否会导致生成的文件移动到gsrc目录,如果是这样,我如何使用make将我的.vh和.xml移到同一目录中


-谢谢

Make从不将任何文件移动到任何地方。如果您编写的规则如下:

gsrc/%.v : %.rdl
        <run some command>

我应该指出,如果您对错误处理非常挑剔,那么您还需要做更多的工作,因此,如果失败,这条规则将正确地清理。但是,这将完成99%的任务。为了完整起见,您是否可以扩展这些额外的任务?如果没有“some命令”实际执行的详细信息,很难知道,但是您可能希望在运行命令之前删除输出,例如
rm-f gsrc/$*.v gsrc/$*.vh gsrc/$*.xml
。然后,
mv
命令可能会失败,只移动了部分文件,因此如果失败,您会希望将它们全部删除(但不要忘记仍然带着错误代码退出,以便让make知道它不起作用)。如果“某个命令”失败,您可能需要进行一些清理,但由于我们不知道它的作用,因此很难确定。
gsrc/%.v gsrc/%.vh gsrc/%.xml: %.rdl
        <run some command>
        mv $*.vh $*.xml gsrc