0
CMake                                                 CPack                        CTest and CDash




               CMak...
CMake                                                CPack                         CTest and CDash




CMake

        1 CM...
CMake                                                CPack                         CTest and CDash

About CMake


CMake - ...
CMake                                                CPack                         CTest and CDash

About CMake


What is ...
CMake                                                CPack                         CTest and CDash

About CMake


More exa...
CMake                                                CPack                         CTest and CDash

About CMake


Who is u...
CMake                                                CPack                         CTest and CDash

About CMake


Importan...
CMake                                                CPack                         CTest and CDash

Workflow


CMake - a cr...
CMake                                                CPack                         CTest and CDash

Workflow


Simple examp...
CMake                                                CPack                         CTest and CDash

Workflow


CMake configu...
CMake                                                CPack                         CTest and CDash

Workflow


CMake Cache
...
CMake                                                CPack                         CTest and CDash

Details


CMake - a cr...
CMake                                                CPack                         CTest and CDash

Details


Variables


...
CMake                                                CPack                         CTest and CDash

Details


Build types
...
CMake                                                CPack                         CTest and CDash

Details


Build parame...
CMake                                                CPack                         CTest and CDash

Details


Flow control...
CMake                                                CPack                         CTest and CDash

Details


Macros and f...
CMake                                                CPack                         CTest and CDash

External dependencies
...
CMake                                                CPack                         CTest and CDash

External dependencies
...
CMake                                                CPack                         CTest and CDash

External dependencies
...
CMake                                                CPack                         CTest and CDash

External dependencies
...
CMake                                                CPack                         CTest and CDash




CPack




         ...
CMake                                                CPack                         CTest and CDash




Available Package G...
CMake                                                CPack                         CTest and CDash




CPack Example: Rele...
CMake                                                CPack                         CTest and CDash




CPack




         ...
CMake                                                CPack                         CTest and CDash

CTest


CMake - a cros...
CMake                                                CPack                         CTest and CDash

CTest


CTest




    ...
CMake                                                CPack                         CTest and CDash

CTest


Features


   ...
CMake                                                CPack                         CTest and CDash

CTest


Example: CTest...
CMake                                                CPack                         CTest and CDash

CTest


Example: CTest...
CMake                                                CPack                         CTest and CDash

CTest


Test-Model



...
CMake                                                CPack                         CTest and CDash

CTest


Test-Mode


  ...
CMake                                                CPack                         CTest and CDash

CTest


Why CTest?



...
CMake                                                CPack                         CTest and CDash

CDash


CMake - a cros...
CMake                                                CPack                         CTest and CDash

CDash


CDash




    ...
CMake                                                CPack                         CTest and CDash

CDash


CDash


      ...
CMake                                                CPack                         CTest and CDash

CDash


CDash




    ...
CMake                                                CPack                         CTest and CDash

CDash


CTest & CDash
...
CMake                                                CPack                         CTest and CDash

CDash


CTest & CDash
...
CMake                                                CPack                         CTest and CDash

CDash


CTest & CDash ...
CMake                                                CPack                         CTest and CDash

CDash




        Ques...
CMake                                                CPack                         CTest and CDash

CDash




        Than...
Upcoming SlideShare
Loading in...5
×

CMake Talk 2008

1,647

Published on

The talk gives an overview about the CMake components. It was held in the SUSE Office to educate employees.

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,647
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
42
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "CMake Talk 2008"

  1. 1. CMake CPack CTest and CDash CMake - a cross-platform, open-source build system Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH 8th July 2008 Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  2. 2. CMake CPack CTest and CDash CMake 1 CMake About CMake Workflow Details External dependencies 2 CPack 3 CTest and CDash CTest CDash Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  3. 3. CMake CPack CTest and CDash About CMake CMake - a cross-platform, open-source build system 1 CMake About CMake Workflow Details External dependencies 2 CPack 3 CTest and CDash CTest CDash Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  4. 4. CMake CPack CTest and CDash About CMake What is CMake? CMake is BSD licensed open-source package written in C++ tools to build, test and package software Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  5. 5. CMake CPack CTest and CDash About CMake More exactly CMake is a meta-build system doesn’t do the final build it generates files for other build systems Makefiles, KDevelop, Eclipse, XCode, MinGW, Cygwin and Visual Studio gives the developer the ability to use the tool they are most productive with Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  6. 6. CMake CPack CTest and CDash About CMake Who is using it Projects using CMake are KDE4 libzypp Qutecom (formly known as WengoPhone) csync, OpenSync Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  7. 7. CMake CPack CTest and CDash About CMake Important features CMake supports complex custom commands (qt moc, yacc) optional component support shared libraries and DSOs with version support automatic dependency generation (C, C++, Fortran) out-of-source builds cross-compiling support Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  8. 8. CMake CPack CTest and CDash Workflow CMake - a cross-platform, open-source build system 1 CMake About CMake Workflow Details External dependencies 2 CPack 3 CTest and CDash CTest CDash Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  9. 9. CMake CPack CTest and CDash Workflow Simple example Hello world! Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  10. 10. CMake CPack CTest and CDash Workflow CMake configure process Read the CMakeCache.txt if it is already there Read the CMake input files (CMakeLists.txt, ..) Write the cache back out Generate the Makefiles Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  11. 11. CMake CPack CTest and CDash Workflow CMake Cache Faster compilation with the cache (KDE4 with cmake in 5 min) Stores all kind of values you can change Can be modified via commandline, ccmake, cmake-gui (qt4) Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  12. 12. CMake CPack CTest and CDash Details CMake - a cross-platform, open-source build system 1 CMake About CMake Workflow Details External dependencies 2 CPack 3 CTest and CDash CTest CDash Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  13. 13. CMake CPack CTest and CDash Details Variables You don’t have to declare them simply set(VARNAME arg1 arg2 ...argN) list() is sometimes better Use SPERATE ARGUMENTS to split space sparated into semi-colon spearated Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  14. 14. CMake CPack CTest and CDash Details Build types None (default) Debug Release RelWithDebInfo MinSizeRel You can define your own Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  15. 15. CMake CPack CTest and CDash Details Build parameters add definition(-Wall) CMAKE C FLAGS or CMAKE CXX FLAGS or it could be CMAKE C FLAGS DEBUG for the Debug build type For packagers: CFLAGS="%{optflags} -g -DNDEBUG" CXXFLAGS="%{optflags} -g -DNDEBUG" cmake -DCMAKE BUILD TYPE=None /path/to/source Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  16. 16. CMake CPack CTest and CDash Details Flow control if (expression) ... else (expression) ... endif (expression) foreach (loop list) ... endforeach (loop list) while (condition) ... while (condition) Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  17. 17. CMake CPack CTest and CDash Details Macros and functions macro (NAME arg1 arg2 ...argN) ... command1 command2 ... endmacro (NAME arg1 arg2 ...argN) They perform text substituions like #define does in C WARNING: variable name clashing is possible. Prefix your variables! Functions have been introduced with CMake 2.6 Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  18. 18. CMake CPack CTest and CDash External dependencies CMake - a cross-platform, open-source build system 1 CMake About CMake Workflow Details External dependencies 2 CPack 3 CTest and CDash CTest CDash Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  19. 19. CMake CPack CTest and CDash External dependencies Find packages find package(Iniparser REQURIED) CMake ships approx. 100 FindXXX.cmake modules You can create your own FindXXX.cmake module Put them in your source dir and set CMAKE MODULE PATH Think of find package as an #include Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  20. 20. CMake CPack CTest and CDash External dependencies Your own find module Script: https://dev.csync.org/browser/cmake/ Scripts/generate_findpackage_file Creates simple FindXXX.cmake module Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  21. 21. CMake CPack CTest and CDash External dependencies Important addresses #cmake @ irc.freenode.net http://www.cmake.org/ http://www.cmake.org/Wiki/CMake Useful Variables http://www.cmake.org/Wiki/CMake FAQ Examples: http://dev.csync.org/browser or http://opensync.org/browser Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  22. 22. CMake CPack CTest and CDash CPack Package Generator Independent of CMake Abstracts Packaging Packaging of sources and builds/binaries Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  23. 23. CMake CPack CTest and CDash Available Package Generators TGZ STGZ NSIS (Null Soft Installer) ZIP TBZ2 TZ PackageMaker (MacOSX) OSXX11 CygwinBinary CygwinSource DEB RPM Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  24. 24. CMake CPack CTest and CDash CPack Example: Release Tarballs include(CPack) set(CPACK_SOURCE_GENERATOR "TGZ;TBZ2") set(CPACK_SOURCE_PACKAGE_FILE_NAME "${NAME}-${VERSION}") Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  25. 25. CMake CPack CTest and CDash CPack It’s like make dist-check, without -check :( make package source Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  26. 26. CMake CPack CTest and CDash CTest CMake - a cross-platform, open-source build system 1 CMake About CMake Workflow Details External dependencies 2 CPack 3 CTest and CDash CTest CDash Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  27. 27. CMake CPack CTest and CDash CTest CTest Testing driver Independent of CMake Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  28. 28. CMake CPack CTest and CDash CTest Features Updating from repositories (CVS, SVN ... no GIT support) Configuration of the project Building Running the tests Performs memory checking Performs code coverage analyse Logging (stdout/stderr/time/...) Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  29. 29. CMake CPack CTest and CDash CTest Example: CTest standalone Create DartTestfile.txt and just run ctest: add_test(TestcaseName1 "command1" "param1" "param2") add_test(TestcaseName2 "command1" "param1" "param2") ... Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  30. 30. CMake CPack CTest and CDash CTest Example: CTest integrated in CMake include(CTest) enable_testing() add_test(TestcaseName1 "command1" "param1" "param2") add_test(TestcaseName2 "command1" "param1" "param2") ... This will generate a make target called “test”. Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  31. 31. CMake CPack CTest and CDash CTest Test-Model Nightly Experimental Continous Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  32. 32. CMake CPack CTest and CDash CTest Test-Mode Start Update Configure Build Test MemCheck Coverage Submit Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  33. 33. CMake CPack CTest and CDash CTest Why CTest? Test driven development! Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  34. 34. CMake CPack CTest and CDash CDash CMake - a cross-platform, open-source build system 1 CMake About CMake Workflow Details External dependencies 2 CPack 3 CTest and CDash CTest CDash Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  35. 35. CMake CPack CTest and CDash CDash CDash Cross-Platform Dashboard System PHP & MySQL Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  36. 36. CMake CPack CTest and CDash CDash CDash Retrieves testing logfiles Summaries testing results Build warnings/errors Testcase PASS/FAIL results Testcase timing results Code Coverage Valgrind/Memcheck results Notifies about regressions (build failures, failed tests, ...) Supports multiple projects Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  37. 37. CMake CPack CTest and CDash CDash CDash Doesn’t build or test the projects! Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  38. 38. CMake CPack CTest and CDash CDash CTest & CDash ”Make it work as one!” Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  39. 39. CMake CPack CTest and CDash CDash CTest & CDash Continous Buildhosts of different platforms Checking the SCM for updates Build the projects from scratch Run tests Archive results Report regressions Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  40. 40. CMake CPack CTest and CDash CDash CTest & CDash - Benefits Detect immeditally build breaking commits Testing on several platforms Tracking performance regressions Hopefully increases qualtiy of the project No time-wasting manual testing More time for development Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  41. 41. CMake CPack CTest and CDash CDash Questions & Answers Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  42. 42. CMake CPack CTest and CDash CDash Thanks for listenting Andreas Schneider <anschneider@suse.de> Daniel Gollub <dgollub@suse.de> SUSE Linux Products GmbH CMake - a cross-platform, open-source build system
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×