Why Makefiles over IDEs?

Why would I use makefiles over ides? Is either one any more scalable for a project?

I've been reading a lot about makefiles, But they seem more dependant on variables such as the compiler than an ide. Can makefiles be used to make large scale applications, like steam, at a low memory cost?

Makefiles are make-dependent. That is, the depend on the make program that you're using.

Makefiles are more flexible for projects with complex build procedures; e.g. files that are passed to a program to generate code. IDEs are usually capable of accommodating such procedures but require more setting up to do it properly. A build rule in a Makefile is just one or two lines.

But to be correct, yes, makefiles are OS-dependant. Which is why people find them such a pain.

They are most typical of *nix environments, and to help manage complexity between those environments, are often managed with the automake and autoconf tools, which will build you scary-looking makefiles that make sure your project compiles properly on any flavor of *nix (including OSX).

Outside of nixen (typically meaning on Windows), you need another set of makefiles, or you require your users to use a *nix emulation layer, like Cygwin or MinGW, which can mitigate most (but not all) of the difficulties in OS architecture. (For compiling. It does nothing for your code unless you specifically design the makefiles to handle the platform-specific branches in your source code, as needed.)

Many efforts to make a better make exist, all with varying degress of success, but make is so entrenched that you will always have it available. (Correct me if I'm wrong, but I don't think there are very many systems left where gmake is not available over the [inferior] system makes.)