gnu make: list the values of all variables (or “macros”) in a particular run

后端 未结 6 1478
面向向阳花
面向向阳花 2020-12-07 16:41

How can I list the current value of all variables (also called macros) in a Makefile when running make?

E.g. if this is in the Makefile:

CUR-DIR := $         


        
6条回答
  •  半阙折子戏
    2020-12-07 17:14

    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)

提交回复
热议问题