6 ms·
IIRC from my C++ days, there's no alternative to Autotools that keeps the same pattern of configure, make, and make install. The big alternatives I remember ar
by curtis3389 6y ago
IIRC from my C++ days, there's no alternative to Autotools that keeps the same pattern of configure, make, and make install.
The big alternatives I remember are: SCons, Maven, and CMake.
I liked CMake the most; Autotools was nearly unusable for me. It seemed like I needed to learn almost as much about Autotools to get productive as I did for C++.
If I'm wrong about anything, someone will come along to correct me.
- tomjakubowski 6y agoIf you squint, `cmake ..` looks like `./configure`. From there, you `make` and `make install`.
- kelnos 6y agoPart of the issue is also the lack of standardized flags. I will remember "./configure --prefix=/opt/foo" until the day I die, but "cmake -DCMAKE_INSTALL_PREFIX=/opt/foo" is something I have to look up every time (like I did just now to type it here).
- unnah 6y agoThat could be solved by a "configure" script that translates its arguments to ones that cmake will understand. And it seems it's such a good idea that someone has already made one: https://github.com/Richard-W/cmake-configure-wrapper https://github.com/Richard-W/cmake-configure-wrapper
- flohofwoe 6y agoYou can run ccmake or cmake-gui to inspect and change the configure options interactively (either in the terminal via ccmake, or in a "proper" UI application via cmake-gui).
- josephcsible 6y agoYou need CMake installed on your system to do "cmake ..". You don't need autotools installed on your system to do "./configure".
- Orphis 6y agoAnd then it fails because you don't have "make" or a compiler installed. Build dependencies aren't an issue as long as they are reasonably standard and easy to install.
- shaklee3 6y agoYes, you need autogen.sh.
- josephcsible 6y agoYou don't need to run autogen.sh. The maintainer can run that ahead of time when they make the tarball.
- rleigh 6y agoDepends on the system. If it was old, or the release date was a while back, you might need to do it anyway. Many Linux distributions do it as a matter of course to ensure it's actually possible to regenerate and that it's up to date. At that point, you start to question the necessity of embedding it in the first place given that its primary consumers don't care.
- zoomablemind 6y agoTo avoid the autotools dependencies, we used autosetup https://msteveb.github.io/autosetup https://msteveb.github.io/autosetup It's very compact to be included along with the project. It does the configure, which tests compiler features and installed libraries. Then generates the Makefile using your custom Makefile.in. Basically, it's a compact set of Tcl scripts, it even includes a small Tcl engine, in case it's not installed on the platform.
- blacksqr 6y agoAutosetup is used by the Fossil VCS project (written by Richard Hipp, SQLite author) https://msteveb.github.io/autosetup/articles/fossil-adopts-autosetup/ https://msteveb.github.io/autosetup/articles/fossil-adopts-a...