https://public.kitware.com/Wiki/api.php?action=feedcontributions&user=Gga&feedformat=atomKitwarePublic - User contributions [en]2024-03-29T13:22:00ZUser contributionsMediaWiki 1.38.6https://public.kitware.com/Wiki/index.php?title=Really_Cool_CMake_Features&diff=11649Really Cool CMake Features2008-02-15T17:26:49Z<p>Gga: /* CMake Features */</p>
<hr />
<div>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.<br />
<br />
== CMake Features ==<br />
<br />
<br />
* Color output for make<br />
* Progress output for make<br />
* Incremental linking support with vs 8,9 and manifests<br />
* Auto-rerun of cmake if any cmake input files change (works with vs 8, 9 using ide macros)<br />
* Auto depend information for C++, C, and Fortran<br />
* Full support for library versions <br />
* Full cross platform install system.<br />
* Generate project files for major IDEs: Visual Studio, Xcode, Eclipse, KDevelop<br />
** not tied to make, other generators like ant possible<br />
* Ability to add custom rules and targets<br />
* Compute link depend information, and chaining of dependent libraries<br />
* Works with parallel make and is fast, can build very large projects like KDE on build farms<br />
* make help. make foo.s, make foo.E<br />
* Advanced RPATH handling, full support for all kinds of static/shared libs and plugins, no more cryptic foo.la libtool "libraries"<br />
* Works on many host operating systems (a full list would be good)<br />
* Supports many toolchains: GNU, MS, Borland, Sun, also e.g sdcc<br />
* Full dependencies: build a target in some directory, and everything this target depends on will be up to date<br />
* Extensive test suite and nightly builds/test on many platforms<br />
* modular design (e.g. the Find modules, language, toolchain and OS support files) * > easily extendable<br />
* just one tool instead of automake+autoconf+libtool+m4+shell+make<br />
* Good scripting language supporting:<br />
** control structures (conditional, iterative)<br />
** regular expressions, eliminating need for grep+awk+sed+perl<br />
** macros (similar to functions, with counted or vararg parameters)<br />
** portable commands for file and directory manipulation<br />
* Extensive auxiliary cmake modules for finding and simplifying use of popular libraries (boost, sdl, fltk, etc.) and utilities (swig, etc). <br />
* Comes with a GUI layer for easy edition of input variables.<br />
* Command line support.<br />
* .tar.gz archiving available on all platforms. No need to chase down tar/gzip for Windows.<br />
* it's a native tool, windows devs don't have to deal with POSIX shells, OSX devs can continue to use XCode<br />
* can create OSX library frameworks<br />
* can create OSX application bundles<br />
* Beta cross compiling, to Linux, Windows, eCos, supercomputers, no OS, from 8bit uCs to 64bit CPUs<br />
* support for chrpath, i.e. changing the RPATH without need to actually link again<br />
<br />
== CTest Features ==<br />
* Run all or sub-sets of tests for a project<br />
* Submit testing results to Dart 1,2 and CDash<br />
* Run tests that build and run --build-and-test command<br />
<br />
<br />
== CPack Features ==<br />
* Create professional windows installers with NSIS<br />
* Create tar.gz tar.Z on any platform<br />
* Create self extracting tar.gz .sh files<br />
* Create rpm <br />
* Create Debian .deb files<br />
* Create Cygwin setup packages</div>Gga