VS Code Extensions
clickmake

clickmake

by eddie2072

Run makefiles from within the editor by clicking on target

Downloads

139

Rating

— (0)

Version

0.4.4

Last updated

Jun 04, 2026

This extension allows you to run a Makefile target from within the editor by clicking above the target. It will execute the following command in the terminal:

make -C "${makefileDir}" -f ${filename} ${target}
  • makefileDir - the directory of the Makefile that is being edited
  • filename - file where you clicked the TARGET
  • target - the text found using the following logic:
    • any line starting with an alphabeticnumeric string followed by a colon and not including =

make -C is used to change directory (instead of a shell cd ... && ...) so the command works in shells that do not support &&, such as nushell.

Features

screenshot

Requirements

  • Tested on vscode 1.72.2

Extension Settings

  • clickmake.enabled (boolean, default true) — enable or disable processing of Makefiles.
  • clickmake.parser ("split" | "fsm", default "split") — which parsing implementation to use:
    • split — simple line-split parser. Readable and fast enough for normal Makefiles.
    • fsm — single-pass scanner. ~3x faster on very large files, with identical output.

CodeLenses are cached per document and only recomputed after the file is saved (or when configuration changes), so editing does not re-parse on every keystroke.

Development

Parsing lives in src/MakefileParser.ts as pure, vscode-independent functions, so it can be unit/perf/fuzz tested without launching VSCode.

npm run test:unit   # unit + fuzz + cross-implementation equivalence tests (mocha, no electron)
npm run bench       # split vs fsm micro-benchmark (bun)
npm run test        # full integration tests (launches VSCode via @vscode/test-electron)

Known Issues

  • Command executed and the text displayed above the target are not yet configurable.

Release Notes

0.4.2

  • CodeLenses are now cached and only recomputed on save instead of on every keystroke
  • Parsing extracted into a pure, testable module with unit / fuzz / benchmark coverage
  • Added clickmake.parser setting to choose between the split (default) and fsm parsers
  • Line endings now handled robustly (\r\n, \n, and lone \r)
  • Removed unimplemented settings (cacheSize, commandTemplate, titleTemplate)

Contributing

Feedback and pull requests are welcomed.

Following extension guidelines

Ensure that you've read through the extensions guidelines and follow the best practices for creating extensions.

Related extensions