makefile - 一个先决条件中的目标数量未知?
问题描述
我有一个进程,它接受一个输入文件(称为 test.in)并生成一些输出文件(模式名称 test-[0-9]?.out)。该过程应始终生成至少 1 个输出文件 (test-1.out),但输出文件的数量将取决于输入文件的内容(随着每个后续输出文件的数量顺序增长)。有没有办法在 make 规则中捕获这种依赖关系,或者我是否需要满足于仅列出保证的第一个目标(使用它来确定过期状态)并将此表单的所有文件的删除写入明确配方?
解决方案
从问题中发布我提出的解决方案(基于@Beta的评论及其赞成票似乎是合理的):
只命名保证的第一个目标,并让该目标的配方删除模式中的其他文件:
test-1.out : test.in
-rm test-[0-9].out test-[0-9][0-9].out
<rest of recipe to produce all test-*.out files from test.in>
在这种情况下,test-1.out 的状态用作所有输出文件状态的替代。如果它已经过时,它们都是。配方的第一行保证删除所有输出文件(直到 test-99.out,如果生成的文件多于需要额外的 globbing 模式),因此一旦配方完成,只有新的文件存在(尤其是如果更新减少了输出文件的数量,这很重要)。
推荐阅读
- r - Travis-CI 在计算代码覆盖率时出现“找不到包目录”错误
- python - 在python中将日期格式从mm/dd/yyyy转换为yyy/mm/dd
- javascript - 使用 Redux 将两个 API 调用合并到同一个对象中
- python - 用循环填充空数据框
- python - 调用模块,“模块”对象不可调用
- javascript - 元素类型无效:应为字符串或类/函数(用于复合组件)但得到:对象
- moq - 为文档客户端创建模拟
- android - Fragment 中的 ViewPager 导致 Fragments 在方向更改时加载两次
- php - PHP 没有从 while 循环中选择正确的值
- javascript - 更改对象的更深层属性会显示在控制台中,但不会在我们打开它或稍后访问它时显示