Makefile Targets
Every Makefile target under your projects, Enter runs it
palupdated 2026-10-27DeveloperIn pal's registry
In pal's registry: the button shows it in pal, which asks before installing; the command does the same from a terminal. This page can't see what your pal has installed.




What it does
Every Makefile target under your project folders in one list. Enter runs it in a terminal or in the background, with variables typed in first.
- Every target of every Makefile in your project folders, one section per project
- Each target's
## descriptionshown beside it enterrunsmake <target>in a terminal in the project folder, left open so you can read the output- Or run it in the background: a notice with the exit status, the full output when it failed
- The side pane shows the recipe;
cmd+lopens the whole Makefile,cmd+ccopies the command
Palettes 1
-
Makefile Targets
makelistEvery target of every Makefile in the project folders, one section per project.
- ↵Run the target (variables or flags typed in the bar go after it; blank runs it plain)
- ⌘CCopy the make command
- ⌘OOpen the project folder
- ⌘LShow the Makefile
Actions
- Runmake <target> in a terminal in the project folder, or in the background per the setting; the bar takes optional words after the target first (VERBOSE=1, -j4).↵
- Copy commandmake -C <dir> <target>.⌘C
- Open projectThe project folder in the file manager.⌘O
- Show MakefileThe whole file in the panel.⌘L
Settings
Extension, [extensions.make]
projectsFolders scanned two levels deep for a Makefile, makefile or GNUmakefile. ~ is expanded.
terminalWhere Run puts make. A terminal keeps its window open until you press Enter; background runs it unseen and toasts the exit status (the output opens in the panel when it failed; a run past 8 s is left to finish on its own). On Linux the terminal is $TERMINAL, else kitty, foot, alacritty, xterm. One of auto, background, kitty, Terminal, iTerm2, Ghostty, Alacritty.
Defaults shown. Change them in pal's settings window or in the config file.
The README
Everything Makefile Targets does, key by key, from the extension's own README.md
Makefile Targets
Every target of every Makefile under the projects folders, one section
per project. A folder is scanned two levels deep for a Makefile,
makefile or GNUmakefile (GNU make's own order when several are there);
dot folders and node_modules, target, vendor, dist, build are not
entered. Targets are read from the file's text, not from make -pn: a
line beginning with one or more names and a colon (:= assignments,
pattern rules and $(VAR) targets are not targets), .PHONY names
included even when their rule is not literal, in file order. A
description is the ## text on the rule's line, else the comment line
right above it (a .PHONY: line in between is skipped).
The palette
The row is the target, its description the subtitle (the project folder
when it has none; the section names the project), the project's name a
keyword (so pal test finds it from the root); a phony target has phony
as one too. The palette is indexed: listed once, searched from the index,
refreshed with cmd+r after a Makefile changes. The detail pane (cmd+i,
asked when the cursor rests on a row) leads with the Makefile's path, the
target and a phony chip, then the description and the recipe as a code
block.
While the cursor is on a target the search bar shows one field after the
query, the words to put after the target (VERBOSE=1, -j4, split on
spaces; Tab into it, Escape back); left blank, Enter runs it plain, as
does a pick that arrives without the field (a hotkey, a bare pal run).
Run opens a terminal in the project folder running make <target> <words>; the
window stays open until Enter is pressed, so a quick target's output is
not gone with it, and the HUD names the command. With terminal = "background" make runs unseen instead: a toast carries the exit status
and the output's last line, and a failure opens the whole output in the
panel too; a run still going after 8 s is left to finish on its own and
the toast says so.
Keyboard
| keys | action |
|---|---|
enter |
Run: make <target> in a terminal in the project folder, or in the background; argument extra (optional): variables or flags after the target |
cmd+c |
Copy command: make -C <dir> <target> |
Marked targets (⌘-click, ⇧↓) of one project run as one make a b; Copy command puts one a line, Open project opens each project once.
| cmd+o | Open project: the folder in the file manager |
| cmd+l | Show Makefile: the whole file in the panel, esc goes back |
| cmd+i | The detail pane with the recipe |
| cmd+r | Refresh: scan the folders again |
Setup
make on PATH for Run; the listing needs nothing (it reads the files).
Point projects at the folders that hold your checkouts; a folder that is
not there lists nothing.
Which terminal Run opens: on macOS the terminal setting (auto takes
the first installed of kitty, Ghostty, Alacritty, iTerm2, Terminal);
Terminal and iTerm2 are driven through AppleScript, so the first Run into
one of them asks for the Automation permission once. On Linux $TERMINAL,
else the first of kitty, foot, alacritty, xterm on PATH. background
needs no terminal at all.
Settings, [extensions.make]:
| key | type | default | what |
|---|---|---|---|
projects |
list of paths | ["~/proj"] |
Folders to scan, two levels deep. ~ is expanded. |
terminal |
auto, background, kitty, Terminal, iTerm2, Ghostty, Alacritty |
auto |
Where Run puts make. |
What it does not do
- Evaluate the Makefile: targets built from variables (
$(BIN):) or pattern rules (%.o: %.c) are not rows, and an included file's targets are not read. - Arguments:
make <target>runs as is; forVAR=value, copy the command and add to it in the terminal. - Watch for changes: a new target shows after
cmd+r, and a listing is kept across restarts until then. - Other build tools (
just,task, npm scripts): Makefiles only.
Platforms
macOS and Linux. The terminal is chosen per platform as above; the scan and the parser are the same on both.