Inference Rule May Fail When Spaces on Blank Command Line (50383)



The information in this article applies to:

  • Microsoft NMAKE Utility for MS-DOS 1.01
  • Microsoft NMAKE Utility for MS-DOS 1.1
  • Microsoft NMAKE Utility for MS-DOS 1.11
  • Microsoft NMAKE Utility for MS-DOS 1.12
  • Microsoft NMAKE Utility for MS-DOS 1.13
  • Microsoft NMAKE Utility for MS-DOS 1.2
  • Microsoft NMAKE Utility for MS-DOS 1.3
  • Microsoft NMAKE Utility for MS-DOS 1.4
  • Microsoft NMAKE Utility for OS/2 1.01
  • Microsoft NMAKE Utility for OS/2 1.11
  • Microsoft NMAKE Utility for OS/2 1.12
  • Microsoft NMAKE Utility for OS/2 1.21

This article was previously published under Q50383

SUMMARY

When using inference rules in an NMAKE description file, the target/dependency line must be followed by a blank line (no space characters); otherwise, the inference rule commands will not be executed. NMAKE checks this line for any ASCII characters; if ANY characters exist, NMAKE will ignore the inference rule and try to execute the line, even if it contains only a space or spaces.

The following is a simple example, which demonstrates this problem:
.c.exe:
  cl $**
 
ALL : main.exe
 
main.exe : main.c
<space>
				
Nothing happens if this description file is passed to NMAKE because the space character causes NMAKE to assume there are explicit commands following the target/dependency line, causing it to ignore the inference rule. Note that this is expected behavior for NMAKE.

MORE INFORMATION

MAKE version 4.x inference rules/description blocks do not exhibit this behavior. This is something to keep in mind when converting description files from MAKE to NMAKE.

Modification Type:MajorLast Reviewed:10/23/2003
Keywords:kb16bitonly KB50383