Makefile Targets

Every Makefile target under your projects, Enter runs it

palupdated 2026-10-27DeveloperIn pal's registry

Open in pal

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.

Makefile Targets: Every target of the Makefiles under the configured folders, a section per project, its ## description under the name
Every target of the Makefiles under the configured folders, a section per project, its ## description under the name
Makefile Targets: The detail pane (cmd+I): the Makefile and the target on top, its description, then its recipe
The detail pane (cmd+I): the Makefile and the target on top, its description, then its recipe
Makefile Targets: Show Makefile (cmd+L): the whole file in the panel, the ## comments that describe the targets included
Show Makefile (cmd+L): the whole file in the panel, the ## comments that describe the targets included
Makefile Targets: What a target can do: run it, copy the make command, open the project, show the Makefile
What a target can do: run it, copy the make command, open the project, show the Makefile
1 of 4

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 ## description shown beside it
  • enter runs make <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+l opens the whole Makefile, cmd+c copies the command

Palettes 1

  • Makefile Targetsmakelist

    Every 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]

projects
~/proj list

Folders scanned two levels deep for a Makefile, makefile or GNUmakefile. ~ is expanded.

terminal
Terminal (auto) select

Where 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; for VAR=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.