Difference between revisions of "Really Cool CMake Features"

From KitwarePublic
Jump to navigationJump to search
Line 19: Line 19:
 
* Works with parallel make and is fast, can build very large projects like KDE on build farms
 
* 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
 
* make help. make foo.s, make foo.E
* Advanced RPATH handling, full support for all kinds of static/shared
+
* Advanced RPATH handling, full support for all kinds of static/shared libs and plugins, no more cryptic foo.la libtool "libraries"
libs and plugins, no more cryptic foo.la libtool "libraries"
 
 
* Works on many host operating systems (a full list would be good)
 
* Works on many host operating systems (a full list would be good)
 
* Supports many toolchains: GNU, MS, Borland, Sun, also e.g sdcc
 
* Supports many toolchains: GNU, MS, Borland, Sun, also e.g sdcc
* Full dependencies: build a target in some directory, and everything
+
* Full dependencies: build a target in some directory, and everything this target depends on will be up to date
this target depends on will be up to date
 
 
* Extensive test suite and nightly builds/test on many platforms
 
* Extensive test suite and nightly builds/test on many platforms
* modular design (e.g. the Find modules, language, toolchain and OS
+
* modular design (e.g. the Find modules, language, toolchain and OS support files) * > easily extendable
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
* it's a native tool, windows devs don't have to deal with POSIX
+
* it's a native tool, windows devs don't have to deal with POSIX shells, OSX devs can continue to use XCode
shells, OSX devs can continue to use XCode
 
 
* can create OSX library frameworks
 
* can create OSX library frameworks
 +
* can create OSX application bundles
 
* Beta cross compiling, to Linux, Windows, eCos, supercomputers, no OS, from
 
* Beta cross compiling, to Linux, Windows, eCos, supercomputers, no OS, from
 
8bit uCs to 64bit CPUs
 
8bit uCs to 64bit CPUs
 
* support for chrpath, i.e. changing the RPATH without need to actually
 
* support for chrpath, i.e. changing the RPATH without need to actually
 
link again
 
link again
 
  
 
==  CTest Features ==
 
==  CTest Features ==

Revision as of 10:55, 15 February 2008

Here is a feature list of CMake that is in no particular order. There are a lot of small and big things that CMake can do and many go unnoticed or are taken for granted. The idea is to try to create a comprehensive list of cool features both great and small. CMake comes with three main packages CMake, CTest, and CPack, so it would be best to divide the features among those packages.


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 IDE's 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
  • 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