|
|
(6 intermediate revisions by 4 users not shown) |
Line 1: |
Line 1: |
| 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 really cool. Please list your addition under the appropriate package: CMake, CTest, or CPack. | | {{CMake/Template/Moved}} |
|
| |
|
| == CMake Features ==
| | This page has moved [https://gitlab.kitware.com/cmake/community/wikis/doc/cmake/Really-Cool-CMake-Features here]. |
| | |
| | |
| * 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
| |
| ** [http://graphviz.org/ Graphviz] output for visualizing dependency trees
| |
| * 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
| |
| * Good scripting language that supports:
| |
| ** control structures (conditional, iterative)
| |
| ** regular expressions, eliminating need for grep+awk+sed+perl
| |
| ** macros (similar to functions, with counted or vararg parameters)
| |
| ** portable commands for file and directory manipulation
| |
| * Extensive auxiliary cmake modules for finding and simplifying use of popular libraries (boost, sdl, fltk, etc.) and utilities (swig, etc).
| |
| * Comes with a GUI layer for easy edition of input variables, both Curses and QT based options.
| |
| * 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
| |
| * scales well for really, really big projects like KDE
| |
| | |
| == 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
| |
| * support coverage with gcc, and bullseye coverage tools
| |
| * support memory checking with valgrind, purify, and bounds checker
| |
| | |
| == CPack Features ==
| |
| * Simple Declarative creation of packages/installers using CMake+CPack
| |
| * Create Source or Binary packages
| |
| * A wealth of supported formats:
| |
| ** Create professional windows installers with [http://nsis.sourceforge.net/Main_Page 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
| |