PRB: NMAKE Invokes MASM Instead of the C Compiler (60746)
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.13
- Microsoft NMAKE Utility for OS/2 1.21
This article was previously published under Q60746 SYMPTOMS
When using an NMAKE file in combination with adding /Fa to the
compiler options within Programmer's WorkBench (PWB) or Visual Workbench,
NMAKE will invoke the Microsoft Macro Assembler (MASM), if it is in the
current search path.
This does not occur the first time you build your application, but it
does occur the second time, and thereafter, because of the generation
of the .ASM created by the compiler.
CAUSE
Files with the .ASM extension have a predefined inference rule within
NMAKE to invoke MASM. However, the inference rule for .ASM files takes
place before the rule for files with the .C or .OBJ extension.
Therefore, if you have a filename with the same base name, but one has
an .ASM extension and the other has a .C extension (as is the case
with the /FA switch), the .ASM file will be assembled before the .C
file will be compiled. Since the assembly step generates an .OBJ file
that is newer than the .C file, the .C file is never compiled.
RESOLUTION
Use the following procedures to work around this behavior:
- The best workaround is to use /Fa [LSTFILE.EXT] with a filename
included as a compiler option, instead of allowing the /Fa option
to default to its <filename>.ASM.
Example: /Fa <filename>.ASC
In using this method, the .C file will be compiled, instead of the
.ASM version being assembled.
- Use the /Fc compiler option in place of the /Fa option (if you just
want to look at an assembly source listing). This produces a .COD
file (combined assembly and C source listing).
- Use the /R switch for the NMAKE invocation to ignore inference
rules and macros that are predefined or defined in the TOOLS.INI
file.
Modification Type: | Major | Last Reviewed: | 10/23/2003 |
---|
Keywords: | kb16bitonly KB60746 |
---|
|