In fact, I think you'd be better off writing a deep dive into what/how environment variables work at build time, and also invoking commands on the CLI.
But LD_PRELOAD doesn't really have much to do with build time behavior (unless you're talking about replacing parts of the compiler) - it allows you to force a shared library to be loaded with higher priority than anything else, so it overrides symbols from other libraries.
It is recognized and used by Linux's dynamic linker, which is run-time, not build-time.
Charles university uses and develops something called ReCodex, and it is available on GitHub. As a student, it was very nice to use.
https://github.com/ReCodEx/wiki/wiki