【发布时间】:2022-01-23 00:30:25
【问题描述】:
以下示例直接来自 GNU make 手册:
program: $(OBJECTS)
$(file >$@.in,$^)
$(CMD) $(CMDFLAGS) @$@.in
@rm $@.in
这非常有效。但是,如果我颠倒 $(file) 和外部工具的顺序,行为仍然相同:首先执行 $(file),然后才执行外部工具。
是否可以在配方中调用外部工具,在工具成功完成后,使用 $(file) 处理日志并创建更多文件?
外部工具是生成一组未知文件的代码生成器。配方应该解析日志文件并创建包含文件。与 echo/$(shell) 一起使用,但这受系统命令行长度的限制。使用单独的规则当然可以,但可以在同一个配方中完成吗?
【问题讨论】:
-
“可能”是一个强词。在执行配方时,设置依赖图和变量。无法将它们添加到 current 调用中。但是您应该能够让该工具生成一个包含生成的依赖项的 makefile,然后递归调用它。
-
嗨 Andreas,实际上您可以使用 GNU make 来做到这一点,请参阅我的另一个问题,例如:stackoverflow.com/questions/70398930/…。当前版本使用 echo 创建包含,这就是我要转换为使用 $(file) 的内容。速度更快,不受系统命令行长度限制。