Re:Autotools Mythbuster
by scrollaway on Thursday December 17, 2015 @12:49PM
(#10752991)
> I've used autotools for decades because everything else is worse.
I take it you've used CMake - could you explain in which ways you think it's worse than autotools? I agree it has concerning design flaws, but they don't come anywhere close to autotools' and I'd say CMake is overall dozens of times saner.
Does CMake generate a deliverable which builds on a machine that doesn't have CMake installed? With full incremental build support and all, so reasonable development can take place on that system?
Re:Autotools Mythbuster
by icebraining on Thursday December 17, 2015 @03:16PM
(#10754189)
Yes to the first question, it generates platform-specific build files (e.g. Makefiles for Unix/Linux), which don't need cmake itself to build the software. Regarding the second question, I believe so, but I'm not sure.
Of course once the makefile is generated, there is no need to use cmake (as long as the project is not modified), but you cannot share a makefile generated by cmake, not even redistribute it. You cannot even re/locate it on your hard drive.
The difference is that autotools generates source distributions that do not need autotools to build, while a cmake project always requires cmake when building.
Re:Autotools Mythbuster
by icebraining on Thursday December 17, 2015 @07:12PM
(#10755719)
Oh, I wasn't aware it wasn't distributable, my bad.
Can we give everyone exactly the same tarball of a project and just have it unpack and build on their platform?
Re:Autotools Mythbuster
by icebraining on Thursday December 17, 2015 @03:23PM
(#10754238)
I think so, if you pre-generate the build files for every platform and distribute them all in the tarball.
Look at the nginx configure scripts. They're hand-written, and modularized. Check for "foo"? There's a shell script. Autotools does the same thing via special-purpose autogenerated shell code.
That's why the configure script is 1000's to 10's of 1000's of lines of shell script. It's all auto-generated crap.
And autotools doesn't have the concept of bootstrapping. Building a C program? Great! Test everything with shell scripts. It might be more efficient to have C programs doing work, but no... it has to be the lowest common denominator.
Because managing multiple pieces is too hard. Why? Because there's no modularization.
I've used autotools for decades because everything else is worse. But I have a long-term deep-seated loathing of it which is hard to put into words.