Optimizing winkin by avoiding pseudotargets

Learn how to optimize winkin by avoiding pseudotargets.

Like other make variants, omake (or clearmake) always executes the build script for a pseudotarget, a target that does not name a file system object built by the script. For example, in the section Using a recursive invocation of omake or clearmake, you may be tempted to use a pseudotarget in the makefile of app_src directory:

test_prog_3.exe: ...                  (shortened from ..\util_src\test_prog_3) 
   cd ..\util_src & $(MAKE) test_prog_3.exe

A build of any higher-level target that has test_prog_3.exe as a build dependency always builds a new test_prog_3.exe, which in turn triggers a rebuild of the higher-level target. If the rebuild of test_prog_3.exe was not necessary, the rebuild of the higher-level target may not have been necessary, either. Such unnecessary rebuilds decrease the extent to which you can take advantage of derived object sharing.