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