我想对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
所有执行的命令都会显示出来!