Really Cool CMake Features: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
(more confident ad copy, active instruction to wiki readers)
Line 24: Line 24:
* modular design (e.g. the Find modules, language, toolchain and OS support files) * > easily extendable
* modular design (e.g. the Find modules, language, toolchain and OS support files) * > easily extendable
* just one tool instead of automake+autoconf+libtool+m4+shell+make
* just one tool instead of automake+autoconf+libtool+m4+shell+make
* provides regular expressions, eliminating need for grep+awk+sed+perl
* Strong scripting language supporting:
* portable commands for file and directory manipulation
** control structures (conditional, iterative)
** regular expressions, eliminating need for grep+awk+sed+perl
** macros
** portable commands for file and directory manipulation
* Comes with a GUI layer for easy edition of input variables.
* Command line support.
* .tar.gz archiving available on all platforms.  No need to chase down tar/gzip for Windows.
* .tar.gz archiving available on all platforms.  No need to chase down tar/gzip for Windows.
* it's a native tool, windows devs don't have to deal with POSIX shells, OSX devs can continue to use XCode
* it's a native tool, windows devs don't have to deal with POSIX shells, OSX devs can continue to use XCode

Revision as of 17:04, 15 February 2008

CMake is a mature tool with many features, both big and small. Many go unnoticed or are taken for granted. Help us create a comprehensive list of features that make CMake a joy to work with. Please list your addition under the appropriate package: CMake, CTest, or CPack.

CMake Features

  • Color output for make
  • Progress output for make
  • Incremental linking support with vs 8,9 and manifests
  • Auto-rerun of cmake if any cmake input files change (works with vs 8, 9 using ide macros)
  • Auto depend information for C++, C, and Fortran
  • Full support for library versions
  • Full cross platform install system.
  • Generate project files for major IDEs: Visual Studio, Xcode, Eclipse, KDevelop
    • not tied to make, other generators like ant possible
  • Ability to add custom rules and targets
  • Compute link depend information, and chaining of dependent libraries
  • Works with parallel make and is fast, can build very large projects like KDE on build farms
  • make help. make foo.s, make foo.E
  • Advanced RPATH handling, full support for all kinds of static/shared libs and plugins, no more cryptic foo.la libtool "libraries"
  • Works on many host operating systems (a full list would be good)
  • Supports many toolchains: GNU, MS, Borland, Sun, also e.g sdcc
  • Full dependencies: build a target in some directory, and everything this target depends on will be up to date
  • Extensive test suite and nightly builds/test on many platforms
  • modular design (e.g. the Find modules, language, toolchain and OS support files) * > easily extendable
  • just one tool instead of automake+autoconf+libtool+m4+shell+make
  • Strong scripting language supporting:
    • control structures (conditional, iterative)
    • regular expressions, eliminating need for grep+awk+sed+perl
    • macros
    • portable commands for file and directory manipulation
  • Comes with a GUI layer for easy edition of input variables.
  • Command line support.
  • .tar.gz archiving available on all platforms. No need to chase down tar/gzip for Windows.
  • it's a native tool, windows devs don't have to deal with POSIX shells, OSX devs can continue to use XCode
  • can create OSX library frameworks
  • can create OSX application bundles
  • Beta cross compiling, to Linux, Windows, eCos, supercomputers, no OS, from 8bit uCs to 64bit CPUs
  • support for chrpath, i.e. changing the RPATH without need to actually link again

CTest Features

  • Run all or sub-sets of tests for a project
  • Submit testing results to Dart 1,2 and CDash
  • Run tests that build and run --build-and-test command


CPack Features

  • Create professional windows installers with NSIS
  • Create tar.gz tar.Z on any platform
  • Create self extracting tar.gz .sh files
  • Create rpm
  • Create Debian .deb files
  • Create Cygwin setup packages