Top Banner
Software Process, CMake, Software Process, CMake, Dashboards, CPack Dashboards, CPack Bill Hoffman Bill Hoffman Kitware, Inc. Kitware, Inc. [email protected] [email protected] http://www/kitware.com http://www/kitware.com 1-518-371-3971 1-518-371-3971
17

Software Process, CMake, Dashboards, CPack Bill Hoffman Kitware, Inc. [email protected].

Dec 24, 2015

Download

Documents

Jonas Nelson
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Software Process, CMake, Dashboards, CPack Bill Hoffman Kitware, Inc. kitware@kitware.com.

Software Process, CMake, Software Process, CMake, Dashboards, CPack Dashboards, CPack

Bill HoffmanBill Hoffman

Kitware, Inc.Kitware, Inc.

[email protected]@kitware.com

http://www/kitware.comhttp://www/kitware.com

1-518-371-39711-518-371-3971

Page 2: Software Process, CMake, Dashboards, CPack Bill Hoffman Kitware, Inc. kitware@kitware.com.

Software Process Software Process OverviewOverview 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

Page 3: Software Process, CMake, Dashboards, CPack Bill Hoffman Kitware, Inc. kitware@kitware.com.

OutlineOutline

CMake - Change the CMake - Change the way ALL way ALL programmers build programmers build softwaresoftware

Dashboards - If its not Dashboards - If its not tested it doesn’t worktested it doesn’t work

CPackCPack

Page 4: Software Process, CMake, Dashboards, CPack Bill Hoffman Kitware, Inc. kitware@kitware.com.

CMake - changing the way CMake - changing the way ALL programmers compile ALL programmers compile codecode 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

Page 5: Software Process, CMake, Dashboards, CPack Bill Hoffman Kitware, Inc. kitware@kitware.com.

CMake RequirmentsCMake 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

Page 6: Software Process, CMake, Dashboards, CPack Bill Hoffman Kitware, Inc. kitware@kitware.com.

Windows GUI

Unix GUI

CMakeLists.txt

MSVCProject

.NET Solution

Makefile

Userselects

CMake: Example UsageCMake: Example Usage

Page 7: Software Process, CMake, Dashboards, CPack Bill Hoffman Kitware, Inc. kitware@kitware.com.

CMake GUI (ccmake CMake GUI (ccmake CMakeSetup) Process Flow CMakeSetup) Process Flow

Configure

Write CMakeCache.txt

Did Cache

Change?

Yes

No

GenerateMakefile or

Project

Page 8: Software Process, CMake, Dashboards, CPack Bill Hoffman Kitware, Inc. kitware@kitware.com.

CMake LanguageCMake 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)

Page 9: Software Process, CMake, Dashboards, CPack Bill Hoffman Kitware, Inc. kitware@kitware.com.

CMake LanguageCMake 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

Page 10: Software Process, CMake, Dashboards, CPack Bill Hoffman Kitware, Inc. kitware@kitware.com.

Software Process Software Process DashboardsDashboards

RevisionControl

Results posted on web(i.e., the dashboard)Central DART ServerCVS/SVN maintains

source code revisions

CMake/CTest compiles and tests source code

Distributed Clients

Developers review results

Developers check-in code

Page 11: Software Process, CMake, Dashboards, CPack Bill Hoffman Kitware, Inc. kitware@kitware.com.

Dashboards – Dashboards – “If it’s not tested it doesn’t “If it’s not tested it doesn’t work”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

Page 12: Software Process, CMake, Dashboards, CPack Bill Hoffman Kitware, Inc. kitware@kitware.com.

VTK Quality DashboardVTK Quality Dashboard

http://public.kitware.com/VTK/Testing/Dashboard/MostRecentResults-Nightly/Dashboard.html

Page 13: Software Process, CMake, Dashboards, CPack Bill Hoffman Kitware, Inc. kitware@kitware.com.
Page 14: Software Process, CMake, Dashboards, CPack Bill Hoffman Kitware, Inc. kitware@kitware.com.

Regression TestingRegression 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

Page 15: Software Process, CMake, Dashboards, CPack Bill Hoffman Kitware, Inc. kitware@kitware.com.

Can search for the checkin Can search for the checkin that caused the problemthat caused the problem

Page 16: Software Process, CMake, Dashboards, CPack Bill Hoffman Kitware, Inc. kitware@kitware.com.

Why Test Daily?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

Page 17: Software Process, CMake, Dashboards, CPack Bill Hoffman Kitware, Inc. kitware@kitware.com.

CPack – create platform CPack – create platform specific installersspecific 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