0
拍摄一个nmake项目,特别是Ruby,并试图准确查看用于构建它的命令。 nmake说它正在编译哪些文件,但不是它用来编译每个文件的命令行。与最明显相关的选项最接近的是/ D,但这并没有说明什么。查看nmake发出的命令
有没有办法,通过提供一些选项nmake或其他方式,以确切地看到它发布的命令?
拍摄一个nmake项目,特别是Ruby,并试图准确查看用于构建它的命令。 nmake说它正在编译哪些文件,但不是它用来编译每个文件的命令行。与最明显相关的选项最接近的是/ D,但这并没有说明什么。查看nmake发出的命令
有没有办法,通过提供一些选项nmake或其他方式,以确切地看到它发布的命令?
没有通用的方法来导致所有命令被回显,例如使用命令选项。但是可以自己创建这样的选项,但它确实涉及对Makefile进行全局编辑。但是,巧妙地使用编辑器(例如匹配正则表达式的编辑器),您可以快速进行更改并获得所需内容。
的技术是本博客文章中描述:Writing Portable Makefiles,第§ 5.
每个生成文件实现允许的命令由一个@
符号这使得回波被禁用来进行。该技术是代替@
符号的使用宏,如在本例中生成文件:
!MESSAGE Makeflags=$(MAKEFLAGS)
!IFNDEF LOG
[email protected]
!ELSE
! IF [ IF /I $(LOG) == yes (EXIT 1) ELSE (EXIT 0) ] == 0
[email protected]
!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)'命令开始时(当然,所有其他@
符号不变!)。