Download presentation
Presentation is loading. Please wait.
Published byJonas Nelson Modified over 9 years ago
1
Software Process, CMake, Dashboards, CPack Bill Hoffman Kitware, Inc. kitware@kitware.comhttp://www/kitware.com1-518-371-3971
2
Software Process Overview CMake – cross platform building Dashboards – continuous testing Mailing List – Developer communication Wiki – Stored developer communication Issue Tracker phpBugTracker – keep track of bugs and feature requests
3
Outline CMake - Change the way ALL programmers build software Dashboards - If its not tested it doesn’t work CPack
4
CMake - changing the way ALL programmers compile code 1999 Start of the ITK project Kitware tasked with build environment VTK current build system autoconf on UNIX pcmaker on Windows Very specific to VTK and hard to maintain, no system introspection on windows CMake born out of necessity 2006 KDE adopted CMake
5
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
6
Windows GUI Unix GUI CMakeLists.txt MSVC Project.NET Solution Makefile User selects CMake: Example Usage
7
CMake GUI (ccmake CMakeSetup) Process Flow Configure Write CMakeCache.txt Did Cache Change? Yes No Generate Makefile or Project
8
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 CMakeLists.txt The CMakeLists.txt file would contain two lines: PROJECT (Hello) ADD_EXECUTABLE(Hello Hello.c)
9
CMake Language project(SampleProject) find_package(VTK REQUIRED) include(${VTK_USE_FILE}) set(SOURCES mySource1.cxx mySource2.cxx) add_executable(myExecutable ${SOURCES}) target_link_libraries(myExecutable vtkRendering) Easy for smaller projects to use larger projects
10
Software Process Dashboards Revision Control Results posted on web (i.e., the dashboard) Central DART Server CVS/SVN maintains source code revisions CMake/CTest compiles and tests source code Distributed Clients Developers review results Developers check-in code
11
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/ValGrind) testing Coverage testing Documentation evaluation Cross platform testing
12
VTK Quality Dashboard http://public.kitware.com/VTK/Testing/Dashbo ard/ MostRecentResults-Nightly/Dashboard.html
14
Regression Testing Compare generated image against standard “correct” image pixel-by-pixel comparison can use a threshold metric adjusted for effects like dithering OpenGL is rather loose about image quality
15
Can search for the checkin that caused the problem
16
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
17
CPack – create platform specific installers 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 CMake BuildPackage
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.