🟢 🔁 Stable | A collection of makefiles "libraries", to use in (almost) all your projects.
Find a file
2024-01-05 23:02:16 +01:00
graphviz.mk feat: add missing png and pdf generation to graphviz 2024-01-05 22:36:04 +01:00
Makefile Initial import 2021-07-15 00:38:16 +02:00
mocodo.mk fix: add missing target mocodo-info 2024-01-05 23:02:01 +01:00
mypaint.mk feat: add new module for mypaint 2024-01-05 23:02:16 +01:00
plantuml.mk fix: improve readability of plantuml-info 2024-01-05 23:01:22 +01:00
README.md Improve usage documentation 2021-07-23 15:46:18 +02:00

Makefiles Forever

A drop-in collection of makefiles libraries for your projects

Description

  • plantuml.makefile — Build plantuml diagrams
  • dot.mk — Build graphviz graph diagrams
  • mocodo.mk — Build mocodo entity-relation and logical diagrams

Usage

Add this repository as a GIT submodule of your project

$ git submodule add https://github.com/glenux/makefiles-forever .makefiles

Include needed features in the end of your makefile

# [...]

-include .makefiles/featureA.mk
-include .makefiles/featureB.mk  

Declare API variables (ex: *_SRC_DIR, *_DEST_DIR) for each module

# Configuration for featureA from Makefiles Forever
FEATUREA_SRC_DIR=/path/to/somewhere
FEATUREA_DEST_DIR=/some/other/path

# Configuration for featureB from Makefiles Forever
FEATUREA_SRC_DIR=/another/path
FEATUREB_DEST_DIR=/a/different/one

Use pre-defined targets as dependencies of your targets:

build: featureA-build
build: featureB-build

clean: featureA-clean
clean: featureB-clean

Feature files usually define more targets than just build and clean, and you can use those too!

Good practices for coding .mk files

  • Keep task parallelism in mind
    • Make all targets available from root makefile
    • Do not descend in subdirectories