Integration with Eclipse has been enhanced to support sub-directory builds launched through Eclipse CDT custom make targets. Eclipse sets the PWD environment variable to the root of the project which caused problems when nmake was not launched from the root. nmake now verifies PWD and corrects the value if necessary allowing Eclipse sub-directory builds to run as expected.
.DIRECTORY Special Atom has been added to mark atoms
bound to directories. It is analogous to the
Atom for marking regular files.
.DIRECTORY can be used with
:A edit operator to identify bound directories.
$(VAR:A=.DIRECTORY) will list the bound directories
:P=X edit operator (unbound existing files) has been extended
to optionally list only regular files, directories, symbolic links or any
combination of the three. The default
:P=X behavior is unchanged
to preserve compatibility. The options are as follows.
|:P=X||current behavior - list existing files of any type|
|:P=XP||list existing files using physical test (symbolic links are not followed)|
|:P=X[P]=F||list existing regular files|
|:P=X[P]=D||list existing directories|
|:P=X[P]=L||list existing symbolic links|
Any combination of
FDL may be specified, such as
:P=XP=DLF, etc. Note that
:P=X=L lists nothing since symbolic links are followed and
will resolve as files or directories. To test links use
:Q edit operator (shell quote) has been extended to allow
quoting for regular expression and shell pattern metacharacters used by
nmake. The edit operator quotes each token to remove the special meaning
of any syntactical constructs to allow interpretation as a literal string.
:Q behavior is unchanged to preserve compatibility.
Only one option may be used at a time. The options are as follows.
|:Q||quote for the shell - current behavior|
|:Q=C||quote for :C edit operator regular expression metacharacters|
|:Q=M||quote for :M edit operator regular expression metacharacters|
|:Q=N||quote for :N edit operator shell pattern metacharacters|
.TRIGGER.inode Special Atom can be used to add an inode
comparison to a rule. When a target with
made an extra check is done to compare the target's inode with the inode of
the first file prerequisite. An update is triggered if the inodes are
different. This is in addition to the normal date check and other triggers.
The inode check works for both hard and symbolic links.
.TRIGGER.inode is now used by the
Here is a simple example.
$ cat Makefile t1 : p1 .TRIGGER.inode ln -f $(*) $(<) $ nmake + ln -f p1 t1 $ ls -li p1 t1 514882 -rw-r--r-- 2 richb richb 3 Jun 7 10:27 p1 514882 -rw-r--r-- 2 richb richb 3 Jun 7 10:27 t1 $ rm t1 $ cp -p p1 t1 $ ls -li p1 t1 514882 -rw-r--r-- 1 richb richb 3 Jun 7 10:27 p1 514883 -rw-r--r-- 1 richb richb 3 Jun 7 10:27 t1 $ nmake -e inode mismatch: t1 : p1 + ln -f p1 t1
read statement reads input and assigns the content
to a variable. With the new
-l option it will read one line
at a time, which is useful for reading from pipes. Also two previously
undocumented options have been documented. The
suppresses reading input if no variable is specified, allowing a process
to be initialized for reading without immediately reading input. The
-u[0-9] option reads input from the specified file descriptor.