The use of inference rules eliminates the need to put the same commands in several description blocks. Default inference rules and extensions can be updated by the TOOLS.INI, BUILTINS.MAK, or the file specified by the /b option on the command line (see The TOOLS.INI File and The BUILTINS.MAK File).
Default inference rules and extensions are supplied by NMAKE32. The .SUFFIXES: target defaults to the following extensions:
.SUFFIXES: .exe .obj .asm .c .bas .cbl .for .pas .res .rc .cpp .cxx
The default inference extensions can be eliminated by defining an empty .SUFFIXES: target. The .SUFFIXES: target can be redefined as needed.
Example:
.SUFFIXES: .SUFFIXES: .exe .obj .asm .c
The list of default inference rules are the following:
.asm.exe: $(AS) $(AFLAGS) /c $<; .asm.obj: $(AS) $(AFLAGS) $<; .c.exe: $(CC) $(CFLAGS) $< .c.obj: $(CC) $(CFLAGS) /c $< .cbl.exe: $(COBOL) $(COBFLAGS) $<, $@; .cbl.obj: $(COBOL) $(COBFLAGS) $<; .for.exe: $(FOR) $(FFLAGS) $< .for.obj: $(FOR) /c $(FFLAGS) $< .pas.exe: $(PASCAL) $(PFLAGS) $< .pas.obj: $(PASCAL) /c $(PFLAGS) $< .rc.res: $(RC) $(RFLAGS) /r $< .cpp.obj: $(CC) $(CFLAGS) /c $< .cxx.obj: $(CC) $(CFLAGS) /c $<