Makefile variables from command line vs. environment

makefile

Solution

Yes. You can use the origin function to determine where a variable was defined.

ifneq (,$(findstring environment,$(origin LIB)))
    # LIB was defined by the environment
else
    # LIB was defined some other way
endif

Problem

Is there a way to detect whether a variable has been set from the environment vs. on the command line? I would like to distinguish between someone invoking make with `make LIB=mylib` vs. `make` and $LIB being defined.

Original source