Search code examples
makefilegnu-make

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


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 := $(shell /bin/pwd)
LOG-DIR := $(CUR-DIR)/make-logs

Then I would like it to tell me:

CUR-DIR = /home/johv/src/test
LOG-DIR = /home/johv/src/test/make-logs

Solution

  • I ended up doing it like this:

    gmake -pn | grep -A1 "^# makefile"| grep -v "^#\|^--" | sort | uniq > makevars.txt
    

    which gives:

    CUR-DIR := /home/johv/src/test
    LOG-DIR := /home/johv/src/test/make-logs
    MAKEFILE_LIST :=  Makefile
    MAKEFLAGS = pn
    SHELL = /bin/sh
    VARS_OLD := [...]
    

    gmake -pn is really verbose and looks kinda like this:

    # environment
    GNOME2_PATH = /usr/local:/opt/gnome:/usr:/usr/local:/opt/gnome:/usr
    # automatic
    @F = $(notdir $@)
    # makefile
    SHELL = /bin/sh
    # default
    RM = rm -f