Skip to content

Instantly share code, notes, and snippets.

@prwhite
Last active May 13, 2026 11:45
Show Gist options
  • Select an option

  • Save prwhite/8168133 to your computer and use it in GitHub Desktop.

Select an option

Save prwhite/8168133 to your computer and use it in GitHub Desktop.
Add a help target to a Makefile that will allow all targets to be self documenting
# Add the following 'help' target to your Makefile
# And add help text after each target name starting with '\#\#'
help: ## Show this help.
@fgrep -h "##" $(MAKEFILE_LIST) | fgrep -v fgrep | sed -e 's/\\$$//' | sed -e 's/##//'
# Everything below is an example
target00: ## This message will show up when typing 'make help'
@echo does nothing
target01: ## This message will also show up when typing 'make help'
@echo does something
# Remember that targets can have multiple entries (if your target specifications are very long, etc.)
target02: ## This message will show up too!!!
target02: target00 target01
@echo does even more
@chrissv
Copy link
Copy Markdown

chrissv commented Feb 28, 2024

Hi, just discovered this gist/conversation from a google search. The solution by @BlackHole1 (Oct 26, 2023) meets my needs 90%.
But in some of our makefiles we have a dependency after the target, like this:

app: $(APP_FILE2).exe $(APP_FILE2).exe ##@ Build the applications

The items after the ":" are displayed in the help, and I really don't want this.

I am not conversant enough in awk/gawk to figure out how to suppress the display of the items after the ":"
Can anyone give me advice?

Thanks!

@letrunghieu
Copy link
Copy Markdown

Hi @chrissv, you can repeat the target twice. Once for the help comment and the other one for the list of dependencies. With your example:

app: ##@ Build the applications
app: $(APP_FILE2).exe $(APP_FILE2).exe

@chrissv
Copy link
Copy Markdown

chrissv commented Apr 4, 2024

Hi @chrissv, you can repeat the target twice. Once for the help comment and the other one for the list of dependencies. With your example:

app: ##@ Build the applications
app: $(APP_FILE2).exe $(APP_FILE2).exe

That's a great suggestion, thanks!

@drdv
Copy link
Copy Markdown

drdv commented Dec 23, 2024

I find it difficult to maintain awk one liners across various makefiles. This is a version organised in a script.

@Wotanihor
Copy link
Copy Markdown

When you are always on the go, you often have to review documents or articles straight from your smartphone. Not all checking websites are optimized for mobile screens, which slows down workflow. I find it very convenient to use a dedicated brisk AI detector app instead. You can quickly copy text from your emails and instantly know if it was written by a chatbot.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment