I fail to understand why one cannot simply compile OpenGL applications like any other C/C++ application, are OpenGL applications, or any other graphics application for that matter, so different?
The purpose of, for example, a tutorial is to get someone up and running quickly. The fastest way to do that is to give them code that comes with a working build system. And since everyone has their own build systems, the most effective way to provide a working build system is to use a build system that works with any other build system.
See, you seem to like just compiling from the command-line. That’s great… for you. Most other programmers, especially new ones. do not. They want some GUI application that they can just run. They want a ready-made makefile that they can download and make. And so forth.
They don’t want to have to be told, “This tutorial requires these dependencies, so download them all, compile them, include their headers in your compiling command line, then include their libraries in your linking command line, etc.” So we provide them with a safe, simple, and effective alternative that is easy to use and works all the time.
Personally, even if you’re comfortable compiling stuff from a command-line, you really should use some form of build system. If you make anything larger than a few files, it really helps.
And as an extension to that question, I wonder: Wouldn’t it be sufficient to simply put all header files, code files, link libraries, and so on, in the appropriate folders and directories,
and simply supply the compiler with the appropriate flags and search paths?
No. There is no “the compiler”. There are many compilers, used by many different people. Windows has Visual Studio and GCC by way of MingW. These use two completely different command-lines. Things are more standardized on Linux, where Clang and GCC use the same options.
And how would you “supply the compiler with the appropriate flags and search paths?” Even if you pick a compiler, the most this would be would be a batch/script file of some sort. That’s a very difficult thing to write and maintain. And considering that there are very good build systems out there that turn what would be long, complex build scripts into what may be 30-lines of easily maintainable code… I see no reason why someone would even want to do that.