windows - 查看 nmake 发出的命令

标签 windows visual-studio nmake

获取一个 nmake 项目,特别是 Ruby,并尝试查看究竟使用了哪些命令来构建它。 nmake 说明它正在编译哪些文件,但没有说明它用于编译每个文件的命令行。与明显相关的选项最接近的是/D,但这并不能说明什么。

有没有办法通过向 nmake 或其他方式提供一些选项来准确查看它发出的命令?

最佳答案

没有通用的方法可以使所有命令都被回显,例如使用命令选项。然而,您可以自己构建这样一个选项,但这确实涉及对 Makefile 进行全局编辑。但是,通过巧妙地使用编辑器(例如匹配正则表达式的编辑器),您可以快速进行更改并获得您想要的结果。

此博客文章中描述了该技术: Writing Portable Makefiles ,第 5 节。

每个 makefile 实现都允许命令以 @ 符号进行处理,这会导致 echo 被禁用。该技术是使用宏代替 @ 符号,例如本例 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)”(当然,保持所有其他 @ 符号不变!)。

关于windows - 查看 nmake 发出的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30979065/

相关文章:

windows - 如何使用批处理文件清除 json 中的字段?

c++ - 什么时候/为什么要使用 heapmin?

visual-studio - 'EurekaPackage' 包未正确加载 - Visual Studio 2013

visual-studio - 如何在 VS2005 中展开所有折叠的代码区域

在 windows\system32 文件夹中找不到 nmake.exe?如何在 Windows 中设置 nmake 命令?

linux - 如何在 Unix 上配置 Jenkins 并在远程机器窗口中部署

c++ - 试图 Hook Notepad.exe

c++ - 如何在 Visual Studio 的 C/C++ 项目中遵循#include 语句

c++ - 如何使用CMake更改构建机器类型

c - 依赖树中的 Makefile 循环