ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
For my own stuff, I just use a plain old makefile. Autotools has always seemed like a prime example of "cure is worse than the disease" to me. I don't know much about the other 3 on you list.
What's the best build system? Which ones need to be added to this poll?
mk from Plan9
make
makefiles
tinycc
I hate cmake as it sucks and frankly avoid any cpp things like the plague (for many reasons), but especially because building cpp from source is often harder than it's worth.
I've mostly been using GNU autotools the last few years for small projects. I never spent the time to learn how to write just plain Makefiles, but have gotten pretty handy with automake and autoconf in the last year-and-a-half.
I don't completely understand the logic behind the statement: "We do not want 'make uninstall' to remove useful files from the system." If 'make uninstall' removed files from someone's system, wouldn't that mean 'make install' overwrote files on the system? I mean, if the idea is that uninstalling files only uninstalls files that were installed with 'make install'? If there were any files overwritten, wouldn't that be a matter of a user setting an install target that was unintended?
Recently someone suggested to me that Meson was "better" than CMake or Autootools; I've since tried it out on two of my small projects, created a binary and a library. Meson is... interesting. Without stumbling into any major bugs, I basically got it to do everything I needed to do for those small projects, with the help of folks from #mesonbuild on IRC. The docs are pretty good, mostly complete, imo, but I find them a little bit difficult to navigate at times. But what I couldn't find in the docs, I got answers to with good speed from #mesonbuild. As for minor bugs, sometimes it's difficult to call anything a "bug" until I'm sure it's not user-error from lack of experience. xD. But with over 900 issues open on the project repo, I'm concerned about porting yet until I know what I may be facing.
I'm not in any real hurry though to switch my build systems (or generator systems xD). GNU autotools has worked pretty well for me, I may never switch. Once in a while I get pretty frustrated with it but somehow I can always get things to work in the end.
Gradle is quite versatile and takes some time to get even the basics, yet somehow (within a reasonable amount of time spent on websearches) I manage to configure the project the way I want. I have seen it mostly used for Java projects but I have also successfully build a small c program with it.
Hugely overcomplicated pseudo-"universal" stuff, fraught with weird errors and eldritch misbehaviours. Why learn a whole extra made-up language (no matter if it styles itself a "build system" when it IS Turing-complete) when you already have two (sh AND make) you need to know irregardless? Just make full use of either. It is not THAT hard.
Myself, I use a "build system" written by my very own self. 20 kb of portable shell code; 8 years in use; no problems at all. And less time spent WRITING it, than would have gone into LEARNING autotools OR cmake OR whatever-is-in-fashion-today.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.