1.3 KiB
1.3 KiB
title, tags
| title | tags | ||
|---|---|---|---|
| Makefile Patterns |
|
Using the basic example, you can make a complete backup of all backup files.
This file will depend upon everything inside the $(storage_directory).
Unlike bash, you can't just say storage_directory/*: the pattern must be stated as a 'wildcard'.
$(storage_directory)/backup.tgz: $(wildcard $(storage_directory)/*.md)
tar czf $@ $^
The make rules start by processing variables:
backups/backup.tgz: $(wildcard backups/*.md)
tar czf backups/backup.tgz $^
Then the wildcard variable equals whichever backup files are in the backups/ directory:
backups/backup.tgz: backups/backup_29.md backups/backup_30.md
tar czf backups/backup.tgz backups/backup_29.md backups/backup_30.md
The phony backup target should now point to this tar backup.
current_minute != date +%M
storage_directory = backups
.PHONY: backup
backup: $(storage_directory)/backup.tgz
$(storage_directory)/backup.tgz: $(wildcard $(storage_directory)/*.md)
tar czf $@ $^
README.md: Makefile
echo "Basic makefile example." > $@
echo "" >> $@
echo '```' >> $@
cat $< >> $@
echo '```' >> $@
$(storage_directory)/backup_$(current_minute).md: README.md
mkdir -p $(@D)
cp $< $@