The changes in release lu3.5 are largely backward compatible with lu3.4. Every effort has been made to insure code changes do not unexpectedly change the documented behavior of nmake features.
A few enhancements did require small changes to functionality. These changes are described below.
installcommon action was inconsistent and dependent on the order of the
:INSTALLDIR:assertions in the makefile. The assertions have been modified to give consistent results regardless of their sequence. Now the
::assertion will not trigger an install when its target is also installed by
::assertion and either
:INSTALL:within the same makefile. We expect this to be very rare.
:INSTALLDIR:operation to replace the
recurse_end_messagevariables no longer print the current subdirectory by default. Prior to release lu3.5 the value of the variable was prepended to the subdirectory name and printed when nmake recursed into and from a subdirectory via the
:MAKE:operator. The current subdirectory is no longer printed by default making the variables more flexible. For example, the recurse messages can now be defined to print messages in the style of other build tools, which may allow integration with other tools that expect such output.
$(RECURSE_MESSAGE)in the definition of
recurse_end_message. For example:
recurse_begin_message = STARTING DIR $(RECURSE_MESSAGE)
JAVAPACKAGEROOTmust be defined to use the
JAVAPACKAGEROOTis undefined when building a makefile that uses
:JAVA:nmake will return an error indicating
JAVAPACKAGEROOTmust be defined. Prior releases of nmake did not use this variable.
:JAVA:assertion. This does not include projects who have defined their own
JAVAPACKAGEROOTas described in New Features: Java inside-package local build.