Makefile

From XPUB & Lens-Based wiki
Revision as of 18:43, 22 February 2018 by Manetta (talk | contribs)

Makefiles are used in compiling processes.

makefiles have a version check system built in For example, if you use a makefile to process a set of jpg's, it takes them all. If you run the makefile again, it only processes the files that where changed.

Links

GNU Make

Example makefile

Working with the following structure:

pi@raspberry% tree          
.
├── images
│   ├── 0000.jpg
│   ├── 0001.jpg
│   ├── 0002.jpg
│   └── 0003.jpg
├── Makefile
├── output
│   └── a-new-file.txt
└── src
    ├── list.txt
    ├── plain.txt
    └── myscript.py

Makefile

images=$(wildcard images/*.jpg)
# creates: images/001.jpg images/002.jpg images/000.jpg

space:= $(empty) $(empty)
newline:= '\n'
listtxt:= $(subst $(space),$(newline),$(images)) 
# subst is a way to do string replacements, it works like this: $(subst $(delimitator),$(replacement),$(list))
# it's used here to make a list of the images, with one filename on each line

tesseract:
	echo $(listtxt) > src/list.txt
	tesseract src/list.txt src/plain

myscript: tesseract
	cat src/plain.txt | python3 src/myscript.py > output/a-new-file.txt

myscript.py

from sys import stdin, stdout

txt = stdin.read()
output = txt.replace(' the ', ' ******a***** ')
stdout.write(output)