PRNMK9109001: Special Macros $(@D) and $(*D) Not Correct

ID Number: Q76073

1.11 | 1.11

MS-DOS | OS/2

buglist1.11 fixlist1.12

Summary:

PROBLEM ID: NMK9109001

SYMPTOMS

When using the Microsoft NMAKE Utility version 1.11, the special

macros $(@D) and $(*D) may not work correctly.

CAUSE

These macros are built to return only the drive and directory of

the given target. However, $(@D) will sometimes return the entire

path and filename, and $(*D) will sometimes return the entire path

and base of the filename.

STATUS

Microsoft has confirmed this to be a problem in the NMAKE utility

version 1.11. This problem was corrected in version 1.12.

More Information:

The example make files below set up a command description block for a

non-existent target. Since it does not exist, the echo command will

always be performed. Page 114 of the "Microsoft C Advanced Programming

Techniques" manual distributed with Microsoft C version 6.0 describes

the expected functionality of these macros. However, these examples

give incorrect results as shown.

Sample Makefile #1

------------------

test1\test2\test.c:

echo $(@D)

Results:

echo test1\test2\test.c

test1\test2\test.c

Sample Makefile #2

------------------

test1\test2\test.c:

echo $(*D)

Results:

echo test1\test2\test

test1\test2\test