Kudos


Yeah, seeing MrDocs’s first blog leads me to add a note about CMake as well. Honestly, the autotools system that we inherited was utter crap given its complexity, however it did probably serve its purpose well in its intended environment (building part of KOffice/KDE). It was overly large and for the autotools newbies, a real barrier against making changes to Scribus. Ok, adding a single file was generally ok, but we saw issues with moc running, uic running, and most of all tree-based file locations and adding new checks for dependencies.

Our CMake system is not finished, but its doing a good job so far. It took me about a week from CMake newbie status to at least generally understanding how it works and having Scribus building. Running the very latest CVS was a major help as the KDE guys have switched and enhancements they required helped me out. Once CMake 2.4.2 flows into the distros out there, we will more than likely dump autotools completely, so whens that? Well.. Maybe after 1.3.4 is released.. but you never know…

Repeat after me:

Cmake Rocks

Cmake Rocks

Cmake Rocks

While we named this new blog rants, let’s start by praising something which makes developer’s daily grind a little less of a grind. Cmake is exactly that. A dev friendly replacement for traditional auto* tools.

Benefits:

  • The CmakeLists.txt files are models of clarity and only require you to add the name of a file once, where makefile.am requires three different entries for a single file.
  • Speed – on my quite ordinary Linux system it takes 5-7 seconds to generate all the makefiles for Scribus, compared to 30-50 seconds for auto*
  • Much more useful error messages when you make a mistake in editing files. Auto* error messages have been known to drive developers to a state of madness trying to fix the errors.
  • Smaller makefiles. 57kb for the main Scribus makefile from cmake vs 257kb from auto*
  • In the future, compiling Scribus with cmake is as simple as: cmake .

It took me about all of 10 minutes after installing cmake to be able to grok and hack on cmake files in our source code. That rocks.

« Previous Page