An Introduction to CMake, CTest and Dart
Speaker: Bill Hoffman
The KDE build process is now driven by CMake on all platforms. I am new to KDE, but I am one of the original CMake developers. CMake has been in development since 1999, and has been used on several large open source projects such as ITK, VTK, ParaView, VXL, and CMake itself. As one of the largest OSS projects KDE has presented new challenges to CMake and has lead to many improvements.
Unlike many build systems, CMake is designed to be used in conjunction with native build tools allowing developers to use makefiles, Kdevelop projects, Xcode projects, and even MS VS projects. A simple input language is used to specify which files to build and what types of system introspection tests need to be performed to build the software. A persistent cache file is used to store the system information and avoid the need for user-defined environment variables.
In addition to building software, CMake also provides a testing system that integrates with the Dart system. The testing system creates dashboards which show a build snapshot of the software at a given time. This is critical to cross-platform development since often a fix on one platform fails to compile on another one. The testing system provides for nightly builds which use a copy of the software at a specific time each night, experimental tests that can be used to share build results with other developers before committing, and continuous build results that test the build each time files are committed to the source control system.
I will present a brief history of CMake, a description of how CMake works, and will show how the KDE developers can best take advantage of the dashboard system.
Mr Hoffman is currently a Vice President and lead technical developer for Kitware Inc., a small software company founded in 1999 devoted to imaging, visualization, computer graphics, and high quality software engineering tools. While at Kitware, Bill has been a lead developer of the CMake cross platform build system. He has also made major contributions to the Insight Toolkit, VTK, and ParaView. He has 14 years of experience with the design and maintenance of large object oriented software systems. Bill also deployed and manages the Kitware electronic store for book and software sales.
Mr. Hoffman completed his B.Sc. in Computer Science from the University of Central Florida in 1990. He then joined General Electric Corporate Research and Development as a member of the Software Technology Program. During the program, he earned an M.S. in Computer Science from Rensselaer Polytechnic Institute. His master’s project led to the software package TargetJr that was a rich environment for Image Understanding research. The system was the precursor to VXL used by GE, Oxford University, and several other sites around the world for advanced work in Computer Vision. His work on the TargetJr project concentrated on the system infrastructure, cross platform GUI, visualization and GIS.
In addition to the TargetJr package, Mr. Hoffman has contributed to the DARPA funded Image Understanding Environment (IUE) project. In 1996, he was recognized for his work as a technical directory for the IUE at the DARPA IU Workshop. As an expert in C++ and object oriented programming, he has also planned and taught several graduate level courses at Rensselaer Polytechnic Institute on C++ and large object oriented systems. He also taught a course on object oriented programming at New York University.
Slides (PDF) (1.9M)
Video (Ogg) (190M)