This is more or less a rant, (and somewhat of an inquiry).
Linux and Mac users: We all have standard locations where shared and static libraries can be found and linked against. /usr/lib, or /usr/local/lib. We also all have standard locations where header files can be found: /usr/include, or /usr/local/include. We also have a standard about naming conventions for libraries, e.g. every dynamic or static library must begin with "lib" followed by your library name in order to avoid name clashes, because they're all dumped into the same directory, and there's a standard about placing header files in a sub-directory in the respective system "include" directory named after your library name (although not everyone abides to this either for some reason).
Now I ask you, what on earth is Windows doing? Is there even a standard? Because it doesn't seem so.
Everyone is creating custom environment variables such as "SFML_HOME" or "BOOST_ROOT" or "GMOCK_PATH". Do you even know how cumbersome this makes it to write cross platform build systems?
The more libraries you add, the larger your PATH environment variable gets (because it has to point to all kinds of command line tools because Windows doesn't have a "bin" directory), and the more you have to account for in build scripts.
Then you have those people (such as myself) who come from a *NIX OS and don't know any better than to create a folder on C:\ called "dev" under which the common directories "include", "lib", "bin", and "share" can be found.
What is the standard way of doing this on Windows? I've collaborated with a few Windows developers and they all seem to do something entirely different than the last.