makefile - 如何取消隐藏 Makefile 中的命令?
问题描述
我想对 Makefile 进行故障排除。使用@
前缀隐藏了许多命令。例如
all:
@echo "building..."
如何让 make 显示所有命令?我尝试了该-d
选项,但它没有显示隐藏命令。
解决方案
我不确定这就是您要找的东西,但这里有一个相关的技术:
在 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
所有执行的命令都会显示出来!
推荐阅读
- javascript - 如何在下一个 js 中使用本地或会话存储
- leaflet - 错误类型错误:无法读取未定义的属性“_leaflet_pos”
- scala - 使用scala.sys.process._时如何解决编译错误
- php - 在 PHP 上链接 js
- javascript - 你能在同一个域上获得一个外部 SVG 图像的 dataUrl 吗?
- python-3.x - Python:伪枚举 - 作为枚举的类 - 如何避免循环导入
- java - 尝试使用 size() 方法加载集合时如何解决 LazyInitializationException?
- python - 将图像坐标系的原点更改为中心
- sql - SQL Server - 存储过程意外结果
- java - 使用java将两个整数写入一个字节的高4位和低4位