I take it the majority here probably use make? I myself have never used make its always been scons as thats what I started with and now I just love the power it gives you. If you list what build tool you use please tell me specific advantages to your tool. Thanks.
The reasons why I use scons:
1) It's essentially an extension of python so all python libraries work well with it
2) Its a programming language as well as a build tool, so it supports everything from for loops to if statements to while loops etc, everything python can do scons can do also
3)its reasonably flexible, I got some custom python scripts to add Qt4 support and it worked without hassle. You ca write your own custom tools for it also if you're good with python, plus there's an array of tools out there for nearly every project.
From what I've used of make, I think scons scales much better as the project grows. From the way you add header paths, to compiler and linker flags. Its all so much easier looking than make. But if someone here is an ardent make fan, please state why you use make. I'd love to hear your viewpoint :)
I use makefiles, written in such a way that I don't have to update the makefile every time I add or remove files. I like makefiles because they are kind of standard on Linux. If you use some other exotic build system people might not have it so they would have to install it before they can build the program.
Scons is indeed very nice with its flexibility (we used it in game dev to automate all resource operations). Nowadays I use CMake - it's probably better for pure source-code projects, especially if you'd like to generate a project to work with in IDE (I use CMake-MSVS or CMake-Eclipse combinations).
@Peter87 You're right in regards to make it is standard on Linux(and other Unices if I'm correct) so it is better in terms of broader support. But in my opinion, if someone is building from source then they are familiar with build tools so they can figure out scons or Tup as someone mentioned pretty easily. But as I said whatever suits you best, I'm working on my final year project at the moment and I'm using scons and I find it really good. I have a few questions for you, with make can you
1) Obtain which operating system you're building on and pass it into the source with the -D compiler flag?
2) Use conditionals for certain things, in my project I have a debug condition that will allow me to build with certain compiler flags like -g and -pg for gprof
3) Use make to run other make files within the project so you can export certain environment variables
I'm not being a smartarse with these questions by the way, I genuinely am curious if you can do these in make as I have not used it extensively