Software Process, CMake, Dashboards, CPack
description
Transcript of Software Process, CMake, Dashboards, CPack
![Page 1: Software Process, CMake, Dashboards, CPack](https://reader036.fdocuments.us/reader036/viewer/2022081421/5681679c550346895ddce080/html5/thumbnails/1.jpg)
Software Process, CMake, Software Process, CMake, Dashboards, CPack Dashboards, CPack
Bill HoffmanBill HoffmanKitware, Inc.Kitware, [email protected]@kitware.comhttp://www/kitware.comhttp://www/kitware.com1-518-371-39711-518-371-3971
![Page 2: Software Process, CMake, Dashboards, CPack](https://reader036.fdocuments.us/reader036/viewer/2022081421/5681679c550346895ddce080/html5/thumbnails/2.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022081421/5681679c550346895ddce080/html5/thumbnails/3.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022081421/5681679c550346895ddce080/html5/thumbnails/4.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022081421/5681679c550346895ddce080/html5/thumbnails/5.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022081421/5681679c550346895ddce080/html5/thumbnails/6.jpg)
Windows GUI
Unix GUI
CMakeLists.txt
MSVCProject
.NET Solution
Makefile
Userselects
CMake: Example UsageCMake: Example Usage
![Page 7: Software Process, CMake, Dashboards, CPack](https://reader036.fdocuments.us/reader036/viewer/2022081421/5681679c550346895ddce080/html5/thumbnails/7.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022081421/5681679c550346895ddce080/html5/thumbnails/8.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022081421/5681679c550346895ddce080/html5/thumbnails/9.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022081421/5681679c550346895ddce080/html5/thumbnails/10.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022081421/5681679c550346895ddce080/html5/thumbnails/11.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022081421/5681679c550346895ddce080/html5/thumbnails/12.jpg)
VTK Quality DashboardVTK Quality Dashboard http://public.kitware.com/VTK/Testing/
Dashboard/MostRecentResults-Nightly/Dashboard.html
![Page 13: Software Process, CMake, Dashboards, CPack](https://reader036.fdocuments.us/reader036/viewer/2022081421/5681679c550346895ddce080/html5/thumbnails/13.jpg)
![Page 14: Software Process, CMake, Dashboards, CPack](https://reader036.fdocuments.us/reader036/viewer/2022081421/5681679c550346895ddce080/html5/thumbnails/14.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022081421/5681679c550346895ddce080/html5/thumbnails/15.jpg)
Can search for the checkin Can search for the checkin that caused the problemthat caused the problem
![Page 16: Software Process, CMake, Dashboards, CPack](https://reader036.fdocuments.us/reader036/viewer/2022081421/5681679c550346895ddce080/html5/thumbnails/16.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022081421/5681679c550346895ddce080/html5/thumbnails/17.jpg)
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