Tl;DR double-colon rules let you define a target with multiple different recipes that all run when you make that target. It's very useful if you're building re-usable makefiles for multi-language projects. You can create a JS makefile with a
test::
test::
target, and a Go makefile with a
test::
test::
target, include them both, and running
make test
make test
will run both sets of tests.
The key feature is that you don't have to manually specify a parent target to pull everything together like
test: test-js test-go
test: test-js test-go
- double-colon targets are just "extensible" without extra configuration.
Perhaps the same kind of thing could be achieved by adding a tag system to Taskfiles in combination with a way to run all tasks with a given tag?