Я раньше не писал Make-файлы, но я подозреваю, что это было бы полезно в моей ситуации. У меня есть набор текстовых файлов, которые мне нужны для предварительной обработки для извлечения функций для машинного обучения. Структура каталогов может выглядеть так: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
файлов, и работаю все сценарии для всего корпуса занимает несколько часов. Мне нужно реструктурировать, чтобы изменения в одном файле не требовали переработки всего корпуса. Я приветствую любые предложения по эффективному созданию проекта, если то, что я предлагаю, не является идеальным.
Для информации других читателей, '$ <' и '$ @' в этом make-файле являются автоматическими переменными: https://www.gnu.org/software/make/manual/html_node/Automatic-Variables.html#Automatic -Variables – reynoldsnlp
См. Также Правила статических шаблонов: http://www.gnu.org/software/make/manual/html_node/Static-Usage.html#Static-Usage – reynoldsnlp