2015-06-22 52 views
0

拍攝一個nmake項目,特別是Ruby,並試圖準確查看用於構建它的命令。 nmake說它正在編譯哪些文件,但不是它用來編譯每個文件的命令行。與最明顯相關的選項最接近的是/ D,但這並沒有說明什麼。查看nmake發出的命令

有沒有辦法,通過提供一些選項nmake或其他方式,以確切地看到它發佈的命令?

回答

0

沒有通用的方法來導致所有命令被回顯,例如使用命令選項。但是可以自己創建這樣的選項,但它確實涉及對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)'命令開始時(當然,所有其他@符號不變!)。