If you want to clear a variable, setting its value to empty is usually sufficient. Expanding such a variable will yield the same result (empty string) regardless of whether it was set or not. However, if you are using the flavor
(see Flavor Function) and origin
(see Origin Function) functions, there is a difference between a variable that was never set and a variable with an empty value. In such situations you may want to use the undefine
directive to make a variable appear as if it was never set. For example:
foo := foo bar = bar undefine foo undefine bar $(info $(origin foo)) $(info $(flavor bar))
This example will print “undefined” for both variables.
If you want to undefine a command-line variable definition, you can use the override
directive together with undefine
, similar to how this is done for variable definitions:
override undefine CFLAGS
Copyright © 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/make/manual/html_node/Undefine-Directive.html