I know "Make" is a cool software and I've been using it for a while, but when some people reason about its benefits, and when they explain how it helps programmers with managing the unwieldy dependency tree of their projects, one thing they talk about is that changing something in a header file, can cause a kind of trouble, that by using "Make" we can overcome. But I don't get it exactly, when we make some changes in a header file, there are two possibilities:
1_ We reflect those change to all related source files too and so things will be all fine.
2_ We forget to fix at least one of the source files(very likely), and then, when trying to link the whole project together, the linker shows us an error because it's now missing a symbol(maybe we have removed it from the header file, maybe we have changed it...) and then by looking at the error, we can fix all those reported places. And then recompile each unit and link the whole project once again.
Now, if we had used Make, how would this process have been different? the process doesn't sound much different to me, you type "make" and the linker throws the error in just the same way. Then you read the error, and go to fix them all! Where am I wrong?
I personally think the main benefit of "make" is comfort in typing. it's very simple to only type a single "make", each time a change is made, rather than typing the whole specific compile command again and agian.
I even think the difficulty with remembering the dependencies is not a real benefit of make spince we can use "gcc -MM *.c" command(although it's crazy, it's possible) for that.
Also for the importance of order in some compilations, although it's true, it must happen rarely IMNO(in my noobish opinion). Let's assume obj1.o has to be always up to date BEFORE obj2.o gets compiled (from src2.c), now say I forget this order after a while, and I change something in obj1.o , and don't compile src2.c again. Now when I try to link, the linker gives error, because again it can not match some parts of our objects. So we go and fix them all!
P.S.: I feel I'm terribly wrong about all these but still, that's why we ask questions anyway