Makefile 为具有多个依赖项的单个目标编写生成文件规则

Makefile 为具有多个依赖项的单个目标编写生成文件规则,makefile,gnu-make,Makefile,Gnu Make,例如,如果我要用硬件描述语言编译一堆文件,我可以用以下方式编写一个Makefile analyze: a.v b.v c.v top.v vcs $(OPTIONS) a.v vcs $(OPTIONS) b.v vcs $(OPTIONS) c.v vcs $(OPTIONS) top.v makeanalyze将编译其依赖项中的所有文件并构建最终可执行文件。我如何编写一个“单个Makefile规则”,它将编译其所有依赖

例如,如果我要用硬件描述语言编译一堆文件,我可以用以下方式编写一个Makefile

    analyze: a.v b.v c.v top.v
        vcs $(OPTIONS) a.v
        vcs $(OPTIONS) b.v
        vcs $(OPTIONS) c.v
        vcs $(OPTIONS) top.v
makeanalyze将编译其依赖项中的所有文件并构建最终可执行文件。我如何编写一个“单个Makefile规则”,它将编译其所有依赖项并构建一个可执行文件——用类似以下的规则模仿上述规则:

    analyze: %.v
        vcs $(OPTIONS) %.v

上述方法适用于单个文件依赖项。但是,如果我有多个文件依赖项,我将如何处理多个文件?我可以对所有依赖项使用“for循环”吗。我正在寻找Makefile选项来访问for循环中要使用的“依赖项文件”,但找不到。

为每个要分析的文件使用虚拟戳记目标:

analyze : a.analyzed-stamp b.analyzed-stamp c.analyzed-stamp top.analyzed-stamp

%.analyzed-stamp : %.v
    vcs $(OPTIONS) $<
    touch $@
analyze:a.analysis-stamp b.analysis-stamp c.analysis-stamp top.analysis-stamp
%.分析印章:%
vcs$(可选)$<
触碰$@

上述解决方案有效,但也会创建.analysisted戳记文件。相反,Makefile中是否还有其他优雅的解决方案,其中“for循环”自动循环目标中的所有依赖文件并构建最终可执行文件。原因是我有大约900个设计(.v)文件,许多“*.analysisted stamp”文件淹没了Makefile运行目录为分析目标“rm*.analysisted stamp”添加操作将清理目录。出于知识的考虑,仍然想知道make是否支持任何特殊变量,这有助于“For-loop”遍历目标的所有依赖项。@Mike:
make
在诸如循环之类的低级命令上运行得不太好。当然,您可以简单地对$^中的文件执行
;执行vcs$(选项)$$文件;在命令部分中完成
。但是,这会每次重新分析每个文件,最好将流程具体化为文件并避免重复。