Search code examples
makefile

What is ?= in Makefile


KDIR ?= $(shell uname -r)

What is the meaning of ?=?

I have understood the difference between :=, += and = from another thread available in Stack Overflow, but unable to find the explanation for ?=.


Solution

  • ?= indicates to set the KDIR variable only if it's not set/doesn't have a value.

    For example:

    KDIR ?= "foo"
    KDIR ?= "bar"
    
    test:
        echo $(KDIR)
    

    Would print "foo"

    GNU manual: http://www.gnu.org/software/make/manual/html_node/Setting.html