2
我從來沒有寫過Makefiles,但我懷疑它會對我的情況有所幫助。我有一些文本文件需要預處理才能提取機器學習功能。該目錄結構可能是這樣的:Makefile爲大量的文件
/
+---Makefile
+---/corpus
| +-- a.txt
| +-- b.txt
| +-- ...
|
+---/wordcounts
| +-- a.wordcount
| +-- b.wordcount
| +-- ...
|
+---/lettercounts
| +-- a.lettercount
| +-- b.lettercount
| +-- ...
|
...
在/wordcounts
和/lettercounts
的文件從文件生成/corpus
。對於剛剛文件a.txt
,我可以寫make
依賴關係是這樣的:
all: wordcounts/a.wordcount lettercounts/a.lettercount
wordcounts/a.wordcount: corpus/a.txt
cat corpus/a.txt | wc -w > wordcounts/a.wordcount
lettercounts/a.lettercount: corpus/a.txt
cat corpus/a.txt | wc -m > lettercounts/a.lettercount
然而,隨着成千上萬的文件中\corpus
這個Makefile會變得非常長。我想寫一個Makefile來調整\corpus
中的任何文件。這個想法是,無論我在/corpus
中放入多少個文件,Makefile都會自動創建所有其他文件。我怎樣才能做到這一點?這是automake
的用途嗎?
背景目前,我使用一些腳本來生成大型csv
文件,並且運行整個語料庫的所有腳本需要幾個小時。我需要進行重組,以便在一個文件中進行更改不需要重新處理整個語料庫。如果我所建議的並不理想,我歡迎任何有關如何更有效地建立項目的建議。
對於其他讀者信息,這個makefile中的'$ <'和'$ @'是自動變量:https://www.gnu.org/software/make/manual/html_node/Automatic-Variables.html#Automatic - 變量 – reynoldsnlp
參見靜態模式規則:http://www.gnu.org/software/make/manual/html_node/Static-Usage.html#Static-Usage – reynoldsnlp