Sample makefile for project. Could be useful for automating building and rendering images

This commit is contained in:
mmcwilliams 2020-05-23 11:57:59 -04:00
parent 5085b8bb48
commit 8ca9992d48
1 changed files with 86 additions and 0 deletions

86
notes/Makefile.example Normal file
View File

@ -0,0 +1,86 @@
# Splendor organizers to fit in Splendor box
#
# by W. Craig Trader is dual-licensed under
# Creative Commons Attribution-ShareAlike 3.0 Unported License and
# GNU Lesser GPL 3.0 or later.
# This makefile expects an OpenSCAD file named $(PREFIX).scad that defines
# the following variables:
#
# PART -- the name of a part to generate
# VERBOSE -- logically true if you want verbose output (optional)
#
# The OpenSCAD program should have logic that renders a single part by name:
#
# if (PART == "foo") {
# foo();
# } else if (PART == "bar") {
# bar();
# } else if (PART == "foo-bar") {
# foo_bar();
# }
#
# This makefile will use OpenSCAD to create individual model (STL) files and
# image (PNG) files for each declared part, and will use Slic3r to generate
# G-Code for each declared part.
#
# So if PREFIX=widget, then the created files will be:
#
# stl/widget-foo.stl stl/widget-bar.stl stl/widget-foo-bar.stl
# png/widget-foo.png png/widget-bar.png png/widget-foo-bar.png
# gcode/widget-foo.gcode gcode/widget-bar.gcode gcode/widget-foo-bar.gcode
# OpenSCAD binary and options
OPENSCAD=/usr/bin/openscad
OPENSCAD_OPTIONS=-DVERBOSE=false
IMAGE_OPTIONS=--imgsize=1024,768 --colorscheme=DeepOcean
# Slic3r binary and options
SLIC3R=/opt/Slic3r/latest/slic3r
SLIC3R_INI=slic3r.ini
SLIC3R_OPTIONS=--load $(SLIC3R_INI) --print-center 125,105
# Name of OpenSCAD model file
PREFIX=splendor
# ----- Everything after this should not need modification
# Names of parts to build
PARTS=$(shell grep 'PART == ' $(PREFIX).scad | cut -d'"' -f2)
STL=stl
IMAGE=png
GCODE=gcode
MODELS=$(patsubst %,$(STL)/$(PREFIX)-%.$(STL),$(PARTS))
IMAGES=$(patsubst %,$(IMAGE)/$(PREFIX)-%.$(IMAGE),$(PARTS))
GCODES=$(patsubst %,$(GCODE)/$(PREFIX)-%.$(GCODE),$(PARTS))
all: models gcodes images
directories:
@mkdir -p $(STL) $(IMAGE) $(GCODE)
models: directories $(MODELS)
gcodes: directories $(GCODES)
images: directories $(IMAGES)
clean:
rm -rf $(STL) $(GCODE) $(IMAGE)
# Dependencies for models
$(MODELS) : $(STL)/$(PREFIX)-%.$(STL) : $(PREFIX).scad
$(OPENSCAD) $(OPENSCAD_OPTIONS) -o $@ -DPART=\"$(subst $(PREFIX)-,,$(subst .$(STL),,$(@F)))\" $<
# Dependencies for images
$(IMAGES) : $(IMAGE)/$(PREFIX)-%.$(IMAGE) : $(PREFIX).scad
$(OPENSCAD) $(OPENSCAD_OPTIONS) -o $@ -DPART=\"$(subst $(PREFIX)-,,$(subst .$(IMAGE),,$(@F)))\" $(IMAGE_OPTIONS) $<
# Dependencies for slicing
$(GCODES) : $(GCODE)/%.$(GCODE) : $(STL)/%.$(STL) $(SLIC3R_INI)
$(SLIC3R) -o $@ $(SLIC3R_OPTIONS) $<