0
我最近转换为GNU make use。我试图滥用Makefile来处理所有类型的文件,因为Makefile提供了并行和检查点功能。这是我的问题:如何指定makefile的可选依赖关系
我有很多pdf文件,我解析为csv。在PDF文件中的分层文件夹结构:
level1/
level2_1/
level3_1_1.pdf
level3_1_2.pdf
level2_2/
level3_2_1.pdf
level3_2_2.pdf
我有我的脚本规则:
%.csv: %.pdf
python parsepdf.py $< [email protected]
但现在我想连接所有这些文件。最简单的方法是使用一个简单的查找脚本
cat $(find level1/ -name '*.csv') > level1/level1.csv
不过,我想这样做在随后与在每个层次创造了一个中间CSV依赖层次结构的方式。我认为这种方法将利用make -j的并行性优势。
level1/level2_1/level_2_1.csv : level1/level2_1/level3_1_1.csv level1/level2_1/level3_1_2.csv
cat $* > [email protected]
level1/level2_2/level_2_2.csv : level1/level2_2/level3_2_1.csv level1/level2_2/level3_2_2.csv
cat $* > [email protected]
level1/level1.csv : $(wildcard level1/level2_*.csv)
cat $* > [email protected]
但上面的方法为两个问题:
- 即使CSV文件的一个不存在,水平最高的csv文件将不会被创建。我的要求是,即使有一个文件,我应该继续并创建一个csv级别文件。
- 如何在层次结构中自动为这两个级别生成这些规则(可以只假设两个级别)。每个级别可以有不同数量的pdf文件。
Makefile是一个很好的工具吗?如果是的话,在makefile中指定这个目标的最Makefile's方式是什么?
make是处理一些文件编写其他文件一个很好的工具。但是,你的问题和例子并不清楚。你需要阅读你的问题,并问问自己'是否有人不知道它已经明白我在写什么'。如果你很难把自己置于这个位置,让其他人阅读这些,而你没有告诉他们任何事情,你会看到他们是否理解。我敢打赌他们不会。 一旦你的问题写得很好,我会回答它。 – 2014-12-05 11:52:09