Last Updated: February 25, 2016
·
101.2K
· customcommander

Define your own function in a Makefile

Looking at some targets of my Makefile I saw that there were some duplication. I didn't know that I could create functions... Until now :-)

Here is a simple Makefile with a custom function:

define generate_file
    sed 's/{NAME}/$(1)/' greetings.tmpl >$(2).txt
endef

all:
    $(call generate_file,John Doe,101)
    $(call generate_file,Peter Pan,102)

Contents of greetings.tmpl:

Hello {NAME}

This is how you execute your custom function:

$(call <name_of_function>[, <param>][,<param>][,...])

In your function the first parameter becomes $(1), the second $(2), etc.

When you run make it produces two files:

101.txt:

Hello John Doe

102.txt:

Hello Peter Pan