Software Process CMake Dashboards CPack Bill Hoffman Kitware

Software Process, CMake, Dashboards, CPack Bill Hoffman Kitware, Inc. kitware@kitware. com http: //www/kitware. com 1 -518 -371 -3971

Software Process Overview § § § CMake – cross platform building Dashboards – continuous testing Mailing List – Developer communication Wiki – Stored developer communication Issue Tracker php. Bug. Tracker – keep track of bugs and feature requests

Outline § CMake - Change the way ALL programmers build software § Dashboards - If its not tested it doesn’t work § CPack

CMake - changing the way ALL programmers compile code 1999 Start of the ITK project § Kitware tasked with build environment § • VTK current build system l autoconf on UNIX l pcmaker on Windows l Very specific to VTK and hard to maintain, no system introspection on windows • CMake born out of necessity § 2006 KDE adopted CMake

CMake Requirments Support UNIX/LINUX/Windows/MAC § Simple easy to use § Support code generation at build time ( c++ wrapper support) § Do not require any software other than CMake to be installed. § • Need only a C++ compiler (same as ITK itself) § Use Native Build tools like Visual Studio and Xcode

CMake: Example Usage User selects Windows GUI MSVC Project . NET Solution CMake. Lists. txt Makefile Unix GUI

CMake GUI (ccmake CMake. Setup) Process Flow Configure Yes Write CMake. Cache. txt Did Cache Change? No Generate Makefile or Project

CMake Language COMMAND(args) : COMMAND is the name of the command, and args is a white space separated list of arguments. # files needed: Hello. c CMake. Lists. txt The CMake. Lists. txt file would contain two lines: PROJECT (Hello) ADD_EXECUTABLE(Hello. c)

CMake Language • Easy for smaller projects to use larger projects project(Sample. Project) find_package(VTK REQUIRED) include(${VTK_USE_FILE}) set(SOURCES my. Source 1. cxx my. Source 2. cxx) add_executable(my. Executable ${SOURCES}) target_link_libraries(my. Executable vtk. Rendering)

Software Process Dashboards CVS/SVN maintains source code revisions Results posted on web (i. e. , the dashboard) Central DART Server CMake/CTest compiles and tests source code Distributed Clients Revision Control Developers check-in code Developers review results

Dashboards – “If it’s not tested it doesn’t work” § Code Dasboards and our Software Process • Roots in GE Six Sigma initiative § § § Nightly regression testing (see VTK Dashboard) Memory (Purify/Val. Grind) testing Coverage testing Documentation evaluation Cross platform testing

VTK Quality Dashboard § http: //public. kitware. com/VTK/Testing/Dashbo ard/ Most. Recent. Results-Nightly/Dashboard. html


Regression Testing § Compare generated image against standard “correct” image • pixel-by-pixel comparison • can use a threshold metric • adjusted for effects like dithering • Open. GL is rather loose about image quality

Can search for the checkin that caused the problem

Why Test Daily? § § § Large code base too large for any single developer to understand Developers distributed around the world Identify problems as they occur Insure that object API remains unchanged Provide feedback to developers as they experiment with new implementations

CPack – create platform specific installers CMake § § § Build Package NSIS Windows installer package. exe ZIP file windows install file package. zip. tar. gz. tar. Z compressed files package. tar. gz. tar. sh – package. tar. sh self extracting shell files Cygwin setup. exe packages
- Slides: 17