I have used autotools since I started programming on Linux and got used to the whole process. When you first encounter autotools, you are bombarded by numerous scripts and files and can get intimidated very quickly. When you manage to get yourself together, you begin to realize that there are only TWO files that need editing; configure.ac and Makefile.am.
Cmake has always managed to irritate me and cause an overall feeling of disgust. I know that many famous open source projects use Cmake and would like to know your opinion whether I should start using Cmake for my next C project, or continue with well known autotools. I don't plan to support any other platform but Linux (x86 and ARM embedded systems).
Thank You,
Comment away ;)
Top comments (12)
re: emacs pinky, I've had decent success retraining myself to use my hand instead of my finger tip for the control key. I use the bone right at the base of the pinky to activate
C
, and my thumb as usual forM
. It reduces stress, but isn't quite as easy - definitely took some practice, and I get way more thrown off switching to different size keyboards, but I really didn't want to give up Emacs keybindings...Not so hard when you get used to it and have the right set of plugins. I will post my vimrc later. Most useful plugins are YouCompleMe, ctrlP and vim-gutentags. There's more, but with these you have auto complete, can move between files and locate declarations and definitions of functions, etc. And I don't use mouse while using vim.
If you truly never intend to support anything other than UNIX-like systems (autotools actually works rather well on most BSD platforms, as well as being passably usable on OS X and MINIX if you handle them right), then yeah, just use autotools. You're already familiar with it, and there's very little that CMake can do that autotools can't that you're likely to care about if you only intend to build and run on UNIX-like systems.
I assumed the same, It's just that the project I'm currently hired to do requires me to use Cmake for some reason. I created both versions, but still prefer autotools. I really don't understand the hype about Cmake, that is the whole reason for this post; I wanted to hear other people's opinions and experiences.
Thank You for your comment
I do the hard key press thing too, even being aware of the problem isn't quite enough to stop myself. I think my mechanical keyboard is probably the best hardware purchase I've ever made - I hate when I don't have it on me! I just use it in my home, hadn't considered the noise in a workplace. That might catalyze my split keyboard purchase after all.
My .vimrc as requsted, not a pretty site :)
And finally the list of plugins I use (using Pathogen)
Ah, gotcha - I don't think I could manage this style at all on a split keyboard like that, which is too bad because otherwise I'd absolutely want one. It's frustrating how ill-equipped our bodies are for this line of work, or at least our current peripherals. I try to force breaks at least every two hours but a) often fail to and b) that's probably still not even enough.
I have absolutely noticed a difference already since trying the new method, after just a few months. I'm not constantly curling and uncurling it, more just levering up and down in place. Biggest annoyance is imprecision - it's pretty easy to also catch the shift key with your hand.
Sadly it does seem like Emacs bindings are not the greatest choice long-term. I only discovered Emacs a year or so ago, and I'm planning to keep, you know, typing code for probably decades. The fact that I've already had to make a change for physical reasons doesn't bode well.
I am currently reading Cmake documentation and It will take some time to convert from autotools, but everything seems logical enough. It isn't all that bad like I assumed it would be. I currently have 50 lines in CMakeLists.txt, compared to combined 200 lines of configure.ac and Makefile.am.
The only thing that I am actively avoiding is cross compiling with Cmake. With autotools it's very simple;
configure --host
and off you go.I think we digressed a bit from the initial topic but the gist of it is that there's no clear winner. For my current project, I created both autotools and cmake versions and they are both equally effective. It will take me some time to adjust to cmake syntax and learn all the commands, but I think it's worth the effort. One feature that goes in favour of cmake is, in my opinion, the lack of those disgusting m4 scripts.
+1 for lack of m4
other cmake pros for me:
cmake cons:
If you're determined enough, you can write a horrifying build system in either one! I've seen it done (and been guilty myself while learning).
Full on VIM guy here :). Thanks for the tip, guess I'll have to learn a bit more about Cmake.
No problem, just conjure up a 💩load of patience and try to minimise profanities directed at me 😄