以一个nmake项目为例,特别是Ruby,并尝试查看使用了哪些命令来构建它。nmake说明它正在编译哪些文件,但没有说明它使用哪个命令行来编译每个文件。与明显相关的选项最接近的是/D,但这并没有给出太多的解释。
有没有办法,通过向nmake或其他地方提供一些选项,来查看它到底发出了什么命令?
发布于 2015-08-31 06:44:40
没有使所有命令被回显的通用方法,例如使用命令选项。然而,您可以自己构建这样一个选项,但它确实涉及到对Makefile进行全局编辑。但是,通过巧妙地使用编辑器(例如匹配正则表达式的编辑器),您可以快速进行更改并获得所需的内容。
这项技术在这篇博客文章中进行了描述:,第5节。
每个makefile实现都允许一个命令由一个@符号执行,这会导致回声被禁用。方法是使用宏来代替@元件,如本例中的Makefile:
!MESSAGE Makeflags=$(MAKEFLAGS)
!IFNDEF LOG
L=@
!ELSE
! IF [ IF /I $(LOG) == yes ( EXIT 1 ) ELSE ( EXIT 0 ) ] == 0
L=@
!ELSE
L=
!ENDIF
!ENDIF
# To be a valid makefile it must have some rules to perform
all:
$(L)echo;This is a command being executed这可以这样演示:
C:\Users\Brian>nmake /NOLOGO
Makeflags=L
This is a command being executed
C:\Users\Brian>nmake /NOLOGO LOG=yes
Makeflags=L
echo;This is a command being executed
This is a command being executed
C:\Users\Brian>nmake /NOLOGO LOG=no
Makeflags=L
This is a command being executed然后,剩下的就是将命令开头的每个@更改为“$(L)”(当然,保留所有其他@符号不变!)。
发布于 2018-11-01 16:23:18
我使用/N显示命令行,使用/A运行所有目标(不仅仅是过期的目标)。
> nmake /F example.mak /A /Nhttps://stackoverflow.com/questions/30979065
复制相似问题