From 8ca9992d48b390eda958642b81ca16e4ba35f8b6 Mon Sep 17 00:00:00 2001 From: mmcwilliams Date: Sat, 23 May 2020 11:57:59 -0400 Subject: [PATCH] Sample makefile for project. Could be useful for automating building and rendering images --- notes/Makefile.example | 86 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 notes/Makefile.example diff --git a/notes/Makefile.example b/notes/Makefile.example new file mode 100644 index 0000000..da05863 --- /dev/null +++ b/notes/Makefile.example @@ -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) $< \ No newline at end of file