Manual preprocessor

The most simple approach
Very easy to apply and maintain

Doesn't "scale" well to lots of configuration options

Confusing for non-technical users

Has its uses:
Small projects with only one or two options
Technical or infrequently used options (e.g. debugging code)
