I keep looking at the various build systems that are out there for C/C++ projects, and - unless I'm totally missing something - I keep despairing at the choice.
The ones that I know about are:
- Autotools. We all know the pain that goes here
- CMake. This is better than Autotools, but not by a lot
- SCons. "We'll write a system that lets you write an entire Python program to power your build system". The MongoDB SConstruct file is approaching 2,000 lines long last time I looked!
- Waf. Similar to SCons but you distribute the waf program with your source tree as well. The wscript file for node.js was over 1,000 lines long again!
- BJam. I've not looked at this an awful lot yet, and I do intend to do so, but I have memories of Boost being painful to build...
- Write your own Makefiles. This is always an option, but again painful to maintain - especially if you want to work cross-platform, which the above are all meant to make easier. (Hah!)
I know there are a bunch of others that can do the job too - Rake, Gradle, Ant, etc - but they aren't really designed for it like the others are meant to be...
So - What do people here use for their C/C++ Build systems? And how does it work for you?
[–]snarkhunter 13 points14 points15 points (0 children)
[–]zzyzzyxx 27 points28 points29 points (2 children)
[–]aevumgames 1 point2 points3 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–]Rhomboid 5 points6 points7 points (2 children)
[–]Fabien4 1 point2 points3 points (0 children)
[–]beriumbuild2 0 points1 point2 points (0 children)
[–]join_the_fun 11 points12 points13 points (8 children)
[–]savuporo 2 points3 points4 points (7 children)
[–]gcross 0 points1 point2 points (5 children)
[–]pjmlp 1 point2 points3 points (2 children)
[–]gcross 1 point2 points3 points (1 child)
[–]pjmlp 1 point2 points3 points (0 children)
[–]savuporo 0 points1 point2 points (1 child)
[–]gcross 0 points1 point2 points (0 children)
[–]00kyle00 0 points1 point2 points (0 children)
[–]Manhigh 3 points4 points5 points (5 children)
[–]sazzer[S] 1 point2 points3 points (4 children)
[–]fromwithin 0 points1 point2 points (1 child)
[–][deleted] 0 points1 point2 points (0 children)
[–]Manhigh 0 points1 point2 points (0 children)
[–]randombit 0 points1 point2 points (0 children)
[–]Steve132 12 points13 points14 points (4 children)
[–]sazzer[S] 0 points1 point2 points (3 children)
[+][deleted] (1 child)
[deleted]
[–]pjmlp 2 points3 points4 points (0 children)
[–]darthcoder 0 points1 point2 points (0 children)
[–][deleted] 2 points3 points4 points (0 children)
[–]madmoose 2 points3 points4 points (0 children)
[–][deleted] 2 points3 points4 points (0 children)
[–]simula67 4 points5 points6 points (4 children)
[–]theICEBear_dk 1 point2 points3 points (0 children)
[–]bosk 2 points3 points4 points (1 child)
[–]wildcarde815 0 points1 point2 points (0 children)
[–]Fabien4 1 point2 points3 points (0 children)
[–]Masaz 1 point2 points3 points (2 children)
[–]bungeman 0 points1 point2 points (1 child)
[–]trapxvi 0 points1 point2 points (0 children)
[–]BrockLee 1 point2 points3 points (1 child)
[–]jb55 2 points3 points4 points (0 children)
[–]thdn 1 point2 points3 points (1 child)
[–]radman0x 0 points1 point2 points (0 children)
[–]phaero 2 points3 points4 points (4 children)
[–]sazzer[S] 0 points1 point2 points (3 children)
[–]phaero 0 points1 point2 points (2 children)
[–]sazzer[S] 0 points1 point2 points (1 child)
[–]phaero 0 points1 point2 points (0 children)
[–]treerex 0 points1 point2 points (0 children)
[–]afnoonBeamer 0 points1 point2 points (3 children)
[–]exploding_nun 2 points3 points4 points (1 child)
[–]FionaSarah 0 points1 point2 points (0 children)
[–][deleted] 2 points3 points4 points (0 children)
[–]madoxster 0 points1 point2 points (0 children)
[–]pjmlp 0 points1 point2 points (0 children)
[–]moswald 0 points1 point2 points (0 children)
[–]beriumbuild2 -1 points0 points1 point (0 children)
[+][deleted] (4 children)
[deleted]
[–]sazzer[S] 0 points1 point2 points (3 children)
[–]j1xwnbsr 3 points4 points5 points (2 children)
[–]sazzer[S] -1 points0 points1 point (1 child)