GNU make provides .VARIABLES
which holds all global variables' names.
However, this includes built-in variables(like MAKEFLAGS
).
If you have to exclude built-in variables, some filtering like the following
might be needed.
The following makefile prints user-defined variables(CUR-DIR
, LOG-DIR
)
using info
:
VARS_OLD := $(.VARIABLES)
CUR-DIR := $(shell pwd)
LOG-DIR := $(CUR-DIR)/make-logs
$(foreach v,
$(filter-out $(VARS_OLD) VARS_OLD,$(.VARIABLES)),
$(info $(v) = $($(v))))
(I renamed CURDIR
to CUR-DIR
because CURDIR
seems to be a built-in
variable in my system)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…