A Makefile for KiCad 7.0 -> projects. It leverages the new kicad-cli
command included in 7.0 -> to generate output data for distribution and production. Designed to be used locally and in CI/CD pipelines. With the addition of ERC/DRC checks in KiCad 8.0, it can be used to pass/fail builds based on these checks.
- Clone this repository somewhere and define an environment variable
KICADMK_DIR
to the folder:export KICADMK_DIR=/home/me/kicad-makefile
- Copy the example Makefile 'Makefile.example' to the KiCad project to build:
cp Makefile.example /home/me/my_project/Makefile
- Edit the example Makefile referring to comments as a guide.
- Run
make
to run default target that builds output, a merged sch and pcb .pdf and a distribution and production .zip:
- ./output/my_project.pdf: merged pdf with sch pages and pcb copper layers.
- ./output/dist/my_project.zip: sch renders, pcb renders, bom, gerbers, pos and drill files.
- ./output/prod/my_project-prod.zip: bom, gerbers, pos and drill files.
Refer to 'Kicad.mk' for other targets.
The project is fairly stable at this point consider that the kicad-cli
command is at an early stage; things might change!
A target to build a docker container is available make image
. One can then run make within the KiCad project folder with:
docker run --rm -v "$(pwd)":/project kicad-makefile:latest make
The project also publish a package:
docker pull ghcr.io/tuna-f1sh/kicad-makefile:latest
The image uses the latest major KiCad release. For previous releases:
- 7.0 [tag
v1.0
]:ghcr.io/tuna-f1sh/kicad-makefile:v1.0
See my entree project as an example of how to use this to build outputs for release etc.
Use the environment variable EXIT_CODE_VIOLATIONS=1
to fail the build on ERC/DRC violations. The rules are checked as part of the sch
and pcb
targets. To just check rules with exit code, use EXIT_CODE_VIOLATIONS=1 make rules
Alternatively, the to the SCH_ERC_FLAGS
and PCB_DRC_FLAGS
--exit-code-violations
These steps are optional and can be skipped if the defaults are acceptable.
Note
BOM_CMD
is required for KiCad < 8.0 as it does not include a BOM generation tool. KiCad 8.0+ includes a BOM generation tool, but it is not as feature rich as KiBOM.
BOM_CMD
: KiBOM: requires install either withpip
or path to repository - see Makefile.example and './bin/kibom'. Can be defined withBOM_CMD
andBOM_CMD_FLAGS
. Note that by default, the KiBOM script appends to target output so will be re-built wheneverBOM_FILE
is a prerequisite. One can fix this by supplying a 'bom.ini' withoutput_file_name = %O
.
Defaults shown, can be set in Makefile or environment. Refer to Makefile.example for others.
# Main output folder for generated files
OUTPUT_FOLDER ?= $(PROJECT_ROOT)/output
# Dist sub-folders
DIST_FOLDER ?= $(OUTPUT_FOLDER)/dist
PROD_FOLDER ?= $(OUTPUT_FOLDER)/prod