I min (første) makefil bruger jeg et tidsstempel til navngivning af
builds, og det har jeg ordnet på følgende måde:
DATE = $(shell date +%Y%m%d_%H%M)
BUILD_NAME = $(PROJECT)-$(DATE)-$(USER)
BUILD_DIR = /path/to/dir
I forskellige make targets refererer jeg så til
$(BUILD_DIR)/$(BUILD_NAME)/bytecode m.fl.
F.eks. har jeg et build target som
- oversætter koden,
- "wrapper" bytekoden (flytter den inkl. afhængigheder),
- kopierer andre ting med over (billeder, html doks m.m.) og
- tar-gz'er hele skidtet ind i en praktisk flytbar fil.
Indimellem når minuttallet i $(DATE) at skifte mellem wrapperen har
kørt og flytningen af html, gif'er m.m. er sket, og så får jeg to
forskellige tidsstemplede kataloger i mit build dir.
[kaj@host build]$ ls -l
total 16
drwxr-xr-x 3 kaj kaj 4096 Nov 16 11:29 project-20061116_1129-kaj
drwxrwxr-x 3 kaj kaj 4096 Nov 16 11:30 project-20061116_1130-kaj
[kaj@host build]$
Hvordan får jeg make til at lave $(DATE) om til en værdi første gang
den kaldes, og ikke en funktion (som afvikles hver gang den bruges)?