Wednesday, June 27, 2012

Episode 16: Build Automation


Download

News
Tool of the Biweek

Build Automation

History
  • Makefile processors
    • make (BSD) / gnumake
  • Makefile code generators
    • automake / qmake / cmake / premake
  • Ant & Maven
  • IDE Projects 


Features
  • Dependency listing
  • Flags for OS & compiler specific features
    • Optimizations, threading libraries, etc.
  • Conditional logic for different builds
    • FFMpeg: build regular or patent-free (no MPEG-4)

Strengths
  • Keeping the build process organized
  • Calculating transitive closure of dependencies
  • Parallelizing & Distributing build commands (http://www.distcc.org)

Weaknesses
  • Inherent Complexity
  • Obscured errors “Error 1” (various levels of verbosity)
  • "Black Magic"

Tools
  • GNU Automake
  • CMake
  • imake
  • qmake
  • nmake
  • Apache Ant
  • Apache Maven
  • Premake

Uses
  • Continuous Integration
  • Source-based package management systems (Macports, Gentoo, deb-src)