.obj.exe: ilink $<; example1.exe: example1.obj example2.exe: example2.obj ilink /co example2,,,libv3.lib
The first line above defines an inference rule that causes the ILINK command to create an executable file whenever a change is made in the corresponding object file. The file name in the inference rule is specified with the special macro $< so that the rule applies to any .obj file with an out-of-date executable file.
When NMAKE does not find any commands in the first description block, it checks for a rule that might apply and finds the rule defined on the first two lines of the description file. NMAKE applies the rule, replacing $< with example1.obj when it executes the command, so that the ILINK command becomes
ilink example1.obj;
NMAKE does not search for an inference rule when examining the second description block, because a command is explicitly given.