How to handle user variable in a Makefile

Xavier Jouvenot
2 min readFeb 5, 2021

Hello ! I’m Xavier Jouvenot and in this small post, we are going to see how to handle user variable in a Makefile.

Self promotion: You can find other articles on my website 😉

Problematic

When creating some make commands in your Makefile, you may want to have some parameters accessible to the user, so that he could either pass some inputs to your command, or specify some elements for which you will have set some default value.

There are several ways to do it, but we are going to see the simplest and most powerful solution to me. Hopefully, you will find it convenient too 😉

Solution

Let’s dive right in the Makefile and see what defining a user variable looks like:

VARIABLE ?= DEFAULT_VALUE command: echo "${VARIABLE}"

Pretty simple, isn’t it ?! Yet, if you don’t know it exists, you can’t guess it 😆 Everything is done by the operator ?= which is going to set our VARIABLE only if it has not been defined before.

Now, all we need is to pass a value to the variable like that:

make foo # uses the default value specified in the Makefile for VARIABLE make foo VARIABLE= # set VARIABLE to an empty value make foo VARIABLE=SPECIFIC_VALUE # set VARIABLE to a SPECIFIC_VALUE

And voilà now, you know that the operator ?= exists and how to use it 😉

Thank you all for reading this article, And until my next article, have a splendid day 😉

Interesting links

Originally published at http://10xlearner.com on February 5, 2021.

--

--