首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >gnu make:列出特定运行中所有变量(或“宏”)的值

gnu make:列出特定运行中所有变量(或“宏”)的值
EN

Stack Overflow用户
提问于 2011-08-19 14:54:29
回答 7查看 41K关注 0票数 49

如何在运行make时列出Makefile中所有变量(也称为宏)的当前值?

例如,如果它在Makefile中:

代码语言:javascript
运行
复制
CUR-DIR := $(shell /bin/pwd)
LOG-DIR := $(CUR-DIR)/make-logs

然后我想让它告诉我:

代码语言:javascript
运行
复制
CUR-DIR = /home/johv/src/test
LOG-DIR = /home/johv/src/test/make-logs
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-08-22 16:13:18

我最终是这样做的:

代码语言:javascript
运行
复制
gmake -pn | grep -A1 "^# makefile"| grep -v "^#\|^--" | sort | uniq > makevars.txt

这就给出了:

代码语言:javascript
运行
复制
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非常冗长,看起来有点像这样:

代码语言:javascript
运行
复制
# environment
GNOME2_PATH = /usr/local:/opt/gnome:/usr:/usr/local:/opt/gnome:/usr
# automatic
@F = $(notdir $@)
# makefile
SHELL = /bin/sh
# default
RM = rm -f
票数 32
EN

Stack Overflow用户

发布于 2011-08-19 17:16:53

GNU make提供了.VARIABLES,它保存所有全局变量的名称。但是,这包括内置变量(如MAKEFLAGS)。如果您必须排除内置变量,则可能需要像下面这样的过滤。下面的makefile使用info打印用户定义的变量(CUR-DIRLOG-DIR

代码语言:javascript
运行
复制
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))))

(我将CURDIR重命名为CUR-DIR,因为CURDIR似乎是我系统中的一个内置变量)

票数 45
EN

Stack Overflow用户

发布于 2015-09-25 02:05:11

感谢@Ise Wisteria,压缩下来,它显示了所有变量,对于具有多个makefile (Buildroot)的大型项目很有用。

代码语言:javascript
运行
复制
$(foreach v, $(.VARIABLES), $(info $(v) = $($(v))))

输出:BR2_GCC_TARGET_TUNE = "cortex-a8" ...

如果你得到一个像这样的错误:insufficient number of arguments (1) to function 'addprefix'这个项目有一些损坏的变量...我修剪了要显示的变量列表,只使用了前缀BR2_

代码语言:javascript
运行
复制
$(foreach v, $(filter BR2_%,$(.VARIABLES)), $(info $(v) = $($(v))))
票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7117978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档