gpt4 book ai didi

makefile - 使 : invoke command for multiple targets of multiple files?

转载 作者:行者123 更新时间:2023-12-01 09:38:59 28 4
gpt4 key购买 nike

我希望优化现有的 Makefile。它用于为给定目录中的每个日志文件创建多个图(使用 Octave),并为每个将日志文件名作为参数的图使用脚本文件。目前,我对每一种可用的绘图都使用一个规则,手写调用 Octave,将特定的脚本文件/日志文件作为参数。

如果每个情节都有“他的” Octave 脚本作为依赖项(当然还有日志文件),那就太好了,所以如果他的脚本被更改,只会重新生成一个情节。

由于我不想输入那么多,我想知道如何通过仅使用一个通用规则来构建“a”情节来简化这一点?

为了更清楚:

  • 日志文件:“$(LOGNAME).log”
  • 脚本文件:“plot$(PLOTNAME).m”创建“$(LOGNAME)_$(PLOTNAME).png”

我想到的第一件事:

%1_%2.png: %1.log
$(OCTAVE) --eval "plot$<2('$<1')"

但这似乎是不允许的。有人可以给我一个提示吗?

最佳答案

make 不直接支持这个真是太疯狂了,我一直都需要它。

我目前使用的技术(使用 GNU make)(基于 Didier Trosset 的示例):

define OCT_template

all: %_$(1).png

%_$(1).png: %.log
$$(OCTAVE) --eval "plot$(1)('$$*')"

endef

PLOT_NAMES = plot1 plot2 plot3

$(foreach p, $(PLOT_NAMES), \
$(eval $(call OCT_template,$(p))) \
)

这是in the GNU make documentation .

关于makefile - 使 : invoke command for multiple targets of multiple files?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2880975/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com