4 ms·
Even worse, autotools doesn't have the concept of modularization. Look at the nginx configure scripts. They're hand-written, and modularized. Check for "foo"
by adekok 11y ago
Even worse, autotools doesn't have the concept of modularization.
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.
- scrollaway 11y ago> 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.
- kazinator 11y agoDoes 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?
- icebraining 11y agoYes 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.
- kazinator 11y agoCan we give everyone exactly the same tarball of a project and just have it unpack and build on their platform?
- icebraining 11y agoI think so, if you pre-generate the build files for every platform and distribute them all in the tarball.
- jedisct1 11y agoHaha
- atso 11y agoOf 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.
- icebraining 11y agoOh, I wasn't aware it wasn't distributable, my bad.