Where does the name Waf come from?
The name 'Waf' was the shortest and easily typed name that we found at the time (2005). There is no particular meaning.
Where is the license?
It is right here and is included in every waf file.
Where are the examples?
There are two classes of examples:
Why does touch-ing a file not force a rebuild?
By default, Waf hashes the file contents, so the files will be rebuilt when the actual file contents change
Why hashing files at all? Hashing files is inefficient
In general, the python hashing function (md5-based) is very fast. The bottlenecks are usually elsewhere, for example in the amount of memory consumed by the python process. The hashing function can be changed though; a tool illustrates how to compute hashes only when the file timestamps have changed
How to force rebuilds when system headers change?
This is quite slow and ineffective in general but if you really want this:
from waflib.Tools import c_preproc c_preproc.go_absolute=True # enable system folders c_preproc.standard_includes.append('/opt/include') # additional system folders
How to speed up dependency calculation? (boost libraries)
Why do my build run so often?
Run the build with 'waf -v' to see the warnings/errors (if the same files are produced, force a particular 'idx' value), then use the why tool to display the causes. Leaving stale files in the source directory is a frequent source of problems, so keep your source directory tidy.
How to create pkg-config files?
How to display the real command-lines? Only lists of parameters are displayed on 'waf -v'.
When a list is displayed, it means that the command is executed directly, not through a shell. Use the print commands tool, but bear in mind that joining the flags does not reflect exactly what is actually executed. Macros and spaces may be interpreted by the current shell when trying to run the command.
Why does foo.cpp yield a file named foo.cpp.number.o?
This is to prevent collisions that would lead to unnecessary rebuilds. The index can be forced bld(..., idx=566) if necessary
Why is the index per-wscript file and not global for the project?
If the index were global, then adding a target would force the entire project to be rebuilt.
Last update: May 2018