如何在Makefile中取消隐藏命令



我想对Makefile进行故障排除。使用@前缀隐藏了许多命令。例如

all: 
@echo "building..."

如何告诉make显示所有命令?我尝试了-d选项,但它不显示隐藏的命令。

也许可以尝试在V=1或VERBOSE=1 的情况下运行make

我不确定这是你想要的,但这里有一个相关的技术:

在makefile配方中使用@预混合命令可能很方便,因此输出不会太混乱,但正如您可能已经发现的那样,在某些情况下,实际查看执行了什么命令可能很有用。

一种解决方案是避免在生成文件中使用@字符,而是使用变量。比如说,一个一个字母的。说L;日志输出";(但这是你的选择(。

然后,在makefile中的所有命令前面加上这个变量:

target: prerequ
$(L)do_this $< $@
$(L)do_that $< $@

一个简单的定义变量,使用一些命令行开关:

ifeq "$(LOG)" ""
LOG=no
endif
ifeq "$(LOG)" "Y"
L=@
endif

然后,您可以像$make target(无日志记录(或这样从shell启动make:

$ make target LOG=Y

所有执行的命令都会显示出来!

最新更新