1 / 17

Software Process, CMake, Dashboards, CPack

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

luciar
Download Presentation

Software Process, CMake, Dashboards, CPack

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software Process, CMake, Dashboards, CPack Bill Hoffman Kitware, Inc. kitware@kitware.com http://www/kitware.com 1-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. CMake: Example Usage Windows GUI CMakeLists.txt Unix GUI Userselects MSVCProject .NET Solution Makefile

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

  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 • Easy for smaller projects to use larger projects 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)

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

  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/Dashboard/MostRecentResults-Nightly/Dashboard.html

  13. 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

  14. Can search for the checkin that caused the problem

  15. 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

  16. 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 Build Package

More Related