586 lines
31 KiB
HTML
586 lines
31 KiB
HTML
<h1 id="awesome-cmake-awesome">Awesome CMake <a
|
||
href="https://github.com/sindresorhus/awesome"><img
|
||
src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg"
|
||
alt="Awesome" /></a></h1>
|
||
<p><a
|
||
href="https://cmake.org/"><img src="https://rawgit.com/onqtam/awesome-cmake/master/cmake-logo.svg" align="right" width="100"></a></p>
|
||
<blockquote>
|
||
<p>A curated list of awesome <a href="https://cmake.org/">CMake</a>
|
||
scripts, modules, examples and others</p>
|
||
</blockquote>
|
||
<p>Your contributions are highly welcome (first see <a
|
||
href="CONTRIBUTING.md">CONTRIBUTING.md</a>).</p>
|
||
<p>There is another file <a
|
||
href="NonModernCMake.md"><code>NonModernCMake.md</code></a> with other
|
||
links worth taking a look, but they use obsolete practices which are
|
||
considered non-modern - like not using <code>target_*</code>-based
|
||
dependency management - see <a
|
||
href="https://github.com/onqtam/awesome-cmake/issues/16"><code>#16</code></a>
|
||
and <a
|
||
href="https://github.com/onqtam/awesome-cmake/pull/42"><code>#42</code></a>
|
||
for more details.</p>
|
||
<h2 id="contents">Contents</h2>
|
||
<ul>
|
||
<li><a href="#community">Community</a></li>
|
||
<li><a href="#resources">Resources</a></li>
|
||
<li><a href="#package-management--build-systems">Package Management /
|
||
Build Systems</a></li>
|
||
<li><a href="#modules">Modules</a></li>
|
||
<li><a href="#utility-scripts">Utility Scripts</a></li>
|
||
<li><a href="#toolchains">Toolchains</a></li>
|
||
<li><a href="#examples--templates">Examples / Templates</a></li>
|
||
<li><a href="#other">Other</a></li>
|
||
</ul>
|
||
<h2 id="community">Community</h2>
|
||
<ul>
|
||
<li><a
|
||
href="http://webchat.freenode.net/?channels=cmake"><code>#cmake</code>
|
||
on Freenode</a></li>
|
||
<li><a href="https://www.reddit.com/r/cmake/"><code>/r/cmake</code> on
|
||
Reddit</a></li>
|
||
<li><a href="https://www.reddit.com/r/cpp/"><code>/r/cpp</code> on
|
||
Reddit</a></li>
|
||
<li><a href="https://discourse.cmake.org/">Official Discourse
|
||
Forum</a></li>
|
||
<li><a href="http://stackoverflow.com/questions/tagged/cmake">Stack
|
||
Overflow</a></li>
|
||
</ul>
|
||
<h2 id="resources">Resources</h2>
|
||
<ul>
|
||
<li><a href="https://cmake.org/cmake/help/latest/">Latest
|
||
Documentation</a></li>
|
||
<li><a
|
||
href="https://gitlab.kitware.com/cmake/community/-/wikis/FAQ">FAQ</a></li>
|
||
<li><a
|
||
href="https://gitlab.kitware.com/cmake/community/-/wikis/home">Wiki</a></li>
|
||
<li><a href="https://cmake.org/webinars/">Webinars</a></li>
|
||
<li><a href="https://github.com/ruslo/CGold">Web Book</a> - CGold: The
|
||
Hitchhiker’s <a href="https://cgold.readthedocs.io">Guide</a> to the
|
||
CMake. <a
|
||
href="https://opensource.org/licenses/BSD-2-Clause"><code>[BSD2]</code></a></li>
|
||
<li><a href="https://github.com/toeb/moderncmake">Modern CMake</a> -
|
||
Modern CMake <strong>PDF</strong> and samples by the creator of <a
|
||
href="https://github.com/toeb/cmakepp">cmakepp</a>. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a
|
||
href="https://www.siliceum.com/en/blog/post/cmake_01_cmake-basics">Tutorial</a>
|
||
- Modern CMake tutorials part1: CMake basics</li>
|
||
<li><a
|
||
href="http://foonathan.net/blog/2016/03/03/cmake-install.html">Article</a>
|
||
- Easily supporting CMake install and find_package().</li>
|
||
<li><a
|
||
href="http://foonathan.net/blog/2016/07/07/cmake-dependency-handling.html">Article</a>
|
||
- Easy dependency management for C++ with CMake and Git.</li>
|
||
<li><a
|
||
href="https://steveire.wordpress.com/2016/08/09/opt-in-header-only-libraries-with-cmake/">Article</a>
|
||
- Opt-in header-only libraries with CMake.</li>
|
||
<li><a href="https://rix0r.nl/blog/2015/08/13/cmake-guide/">Article</a>
|
||
- Ultimate Guide to Modern CMake.</li>
|
||
<li><a
|
||
href="https://web.archive.org/web/20190116071957/http://voices.canonical.com/jussi.pakkanen/2013/03/26/a-list-of-common-cmake-antipatterns/">Article</a>
|
||
- A list of common CMake antipatterns (from 2013 but still
|
||
relevant).</li>
|
||
<li><a
|
||
href="http://preshing.com/20170511/how-to-build-a-cmake-based-project/">Article</a>
|
||
- How to Build a CMake-Based Project.</li>
|
||
<li><a
|
||
href="http://preshing.com/20170522/learn-cmakes-scripting-language-in-15-minutes/">Article</a>
|
||
- Learn CMake’s Scripting Language in 15 Minutes.</li>
|
||
<li><a href="http://aosabook.org/en/cmake.html">Article</a> - The
|
||
architecture of CMake.</li>
|
||
<li><a href="https://www.youtube.com/watch?v=bsXLMQ6WgIk">Lecture</a> -
|
||
Effective CMake - by Daniel Pfeifer, C++Now 2017.</li>
|
||
<li><a
|
||
href="https://devblogs.nvidia.com/parallelforall/building-cuda-applications-cmake/">Article</a>
|
||
- Building Cross-Platform CUDA Applications with CMake.</li>
|
||
<li><a
|
||
href="https://github.com/Wigner-GPU-Lab/Teaching/tree/master/CMake">Tutorial</a>
|
||
- A step-by-step guide for understanding CMake.</li>
|
||
<li><a
|
||
href="https://steveire.wordpress.com/2017/11/05/embracing-modern-cmake/">Article
|
||
+ Lecture</a> - Embracing Modern CMake - by Stephen Kelly.</li>
|
||
<li><a href="https://www.youtube.com/watch?v=eC9-iRN2b04">Lecture</a> -
|
||
Modern CMake for Modular Design - by Mathieu Ropert, CppCon 2017.</li>
|
||
<li><a
|
||
href="https://pabloariasal.github.io/2018/02/19/its-time-to-do-cmake-right/">Article</a>
|
||
- It’s Time To Do CMake Right (one of the best articles about
|
||
CMake).</li>
|
||
<li>Articles - A series on CMake - by Martin Hořeňovský
|
||
<ul>
|
||
<li><a href="https://codingnest.com/basic-cmake/">Basic CMake
|
||
usage</a>.</li>
|
||
<li><a href="https://codingnest.com/basic-cmake-part-2/">Basic CMake,
|
||
part 2: libraries</a>.</li>
|
||
</ul></li>
|
||
<li><a href="https://www.youtube.com/watch?v=jt3meXdP-QI">Lecture</a> -
|
||
Introduction to CMake - by Florent Castelli, C++ Sweden 2018.</li>
|
||
<li><a
|
||
href="http://bastian.rieck.me/blog/posts/2018/cmake_tips/">Article</a> -
|
||
Some nice and accurate CMake tips.</li>
|
||
<li><a
|
||
href="http://unclejimbo.github.io/2018/06/08/Modern-CMake-for-Library-Developers/">Article</a>
|
||
- Modern CMake for Library Developers.</li>
|
||
<li><a
|
||
href="https://gist.github.com/mbinna/c61dbb39bca0e4fb7d1f73b0d66a4fd1">Article</a>
|
||
- Effective Modern CMake: a great summary of most good practices - by
|
||
Manuel Binna.</li>
|
||
<li><a href="https://crascit.com/professional-cmake/">Book</a> -
|
||
Professional CMake: A Practical Guide (paid).</li>
|
||
<li><a href="https://leanpub.com/effective-cmake">Book</a> - Effective
|
||
CMake: Practical Advice to Write Better CMake (not fully written
|
||
yet).</li>
|
||
<li><a href="https://cliutils.gitlab.io/modern-cmake/">Web Book</a> - An
|
||
Introduction to Modern CMake.</li>
|
||
<li><a
|
||
href="https://vector-of-bool.github.io/2018/08/12/cmake-good.html">YouTube
|
||
Series</a> - How to CMake Good. <a
|
||
href="https://creativecommons.org/publicdomain/zero/1.0/"><code>[CC0-1.0]</code></a></li>
|
||
<li><a href="https://www.youtube.com/watch?v=y7ndUhdQuU8">Lecture</a> -
|
||
More Modern CMake (<a
|
||
href="https://github.com/Bagira80/More-Modern-CMake">slides &
|
||
examples</a>)- by Deniz Bahadir, Meeting C++ 2018.</li>
|
||
<li><a href="https://www.youtube.com/watch?v=y9kSr5enrSk">Lecture</a> -
|
||
Oh No! More Modern CMake (<a
|
||
href="https://github.com/Bagira80/More-Modern-CMake/raw/master/OhNoMoreModernCMake.pdf">slides</a>)-
|
||
by Deniz Bahadir, Meeting C++ 2019.</li>
|
||
<li><a
|
||
href="https://cristianadam.eu/20190223/modifying-the-default-cmake-build-types/">Article</a>
|
||
- Modifying the default CMake build types/flags, toolchains and patches
|
||
- Oh my! - by Cristian Adam.</li>
|
||
<li><a
|
||
href="https://github.com/schweitzer/modern-cmake-tutorial">Tutorial</a>
|
||
- Tutorial and Example on How to Properly Use Modern CMake.</li>
|
||
</ul>
|
||
<h2 id="package-management-build-systems">Package Management / Build
|
||
Systems</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/ruslo/hunter">hunter</a> -
|
||
Cross-platform package manager for C++ (based on CMake ExternalProject).
|
||
<a
|
||
href="https://opensource.org/licenses/BSD-2-Clause"><code>[BSD2]</code></a></li>
|
||
<li><a href="https://github.com/pfultz2/cget">cget</a> - CMake package
|
||
retrieval. This can be used to download and install CMake packages. <a
|
||
href="http://www.boost.org/LICENSE_1_0.txt"><code>[BOOST]</code></a></li>
|
||
<li><a href="https://cppan.org/">cppan</a> - C++ Archive Network - C++
|
||
Package Manager based on CMake, implemented in C++14. <a
|
||
href="http://www.apache.org/licenses/LICENSE-2.0"><code>[APACHE2]</code></a></li>
|
||
<li><a href="https://github.com/iauns/cpm">cpm</a> - C++ Package Manager
|
||
based on CMake and Git. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a href="https://github.com/conan-io/conan">conan</a> - Conan C++
|
||
Package Manager, implemented in Python and has a CMake integration
|
||
backend. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a href="https://github.com/floooh/fips">fips</a> - High-level build
|
||
system/dependency management for distributed, multi-platform C/C++
|
||
projects. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a href="https://github.com/ninja-build/ninja">Ninja</a> - Build
|
||
system that differs from others in two major respects: it is designed to
|
||
have its input files generated by a higher-level build system (like
|
||
CMake), and it is designed to run builds as fast as possible. <a
|
||
href="http://www.apache.org/licenses/LICENSE-2.0"><code>[APACHE2]</code></a></li>
|
||
<li><a href="https://github.com/Microsoft/vcpkg">vcpkg</a> - A tool to
|
||
acquire and build C++ open source libraries. Uses CMake internally as a
|
||
build script language. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a href="https://github.com/AnotherFoxGuy/pmm">pmm</a> - PMM is a
|
||
module for CMake that manages… package managers. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a href="https://github.com/TheLartians/CPM">cpm</a> - A setup-free
|
||
CMake + git dependency manager. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
</ul>
|
||
<h2 id="modules">Modules</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/rpavlik/cmake-modules">cmake-modules</a>
|
||
- <a href="https://github.com/rpavlik">Ryan Pavlik</a>’s collection of
|
||
CMake modules. There are a number of find modules, especially for
|
||
virtual reality and physical simulation, some utility modules, and some
|
||
patches or workarounds for CMake itself. <a
|
||
href="http://www.boost.org/LICENSE_1_0.txt"><code>[BOOST]</code></a></li>
|
||
<li><a href="https://github.com/bilke/cmake-modules">cmake-modules</a> -
|
||
This is a collection of additional CMake modules. Most of them are from
|
||
Ryan Pavlik. <a
|
||
href="http://www.boost.org/LICENSE_1_0.txt"><code>[BOOST]</code></a></li>
|
||
<li><a href="https://github.com/Eyescale/CMake">CMake</a> - <a
|
||
href="https://github.com/Eyescale">Eyescale</a>’s common CMake modules.
|
||
<a
|
||
href="https://opensource.org/licenses/BSD-3-Clause"><code>[BSD3]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/jedbrown/cmake-modules">cmake-modules</a> -
|
||
CMake modules for some scientific libraries. <a
|
||
href="https://opensource.org/licenses/BSD-2-Clause"><code>[BSD2]</code></a></li>
|
||
<li><a href="https://github.com/chadmv/cgcmake">cgcmake</a> - CMake
|
||
modules for common applications related to computer graphics. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/sakra/FindMathematica">FindMathematica</a> -
|
||
CMake module for Mathematica. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/KDE/extra-cmake-modules">extra-cmake-modules</a>
|
||
- <a href="https://github.com/KDE">KDE</a>’s extra modules and scripts
|
||
for CMake. <a
|
||
href="https://opensource.org/licenses/BSD-3-Clause"><code>[BSD3]</code></a></li>
|
||
<li><a href="https://github.com/julp/FindICU.cmake">FindICU.cmake</a> -
|
||
CMake module to find International Components for Unicode (ICU) Library.
|
||
<a
|
||
href="https://opensource.org/licenses/BSD-2-Clause"><code>[BSD2]</code></a></li>
|
||
<li><a href="https://github.com/justusc/FindTBB">FindTBB</a> - CMake
|
||
find module for Intel Threading Building Blocks. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a href="https://github.com/apriorit/FindWiX">FindWiX</a> - CMake
|
||
module for building <a
|
||
href="https://en.wikipedia.org/wiki/Windows_Installer">Windows
|
||
Installer</a> packages with <a href="http://wixtoolset.org">WiX
|
||
toolset</a>. <a
|
||
href="https://opensource.org/licenses/BSD-3-Clause"><code>[BSD3]</code></a></li>
|
||
<li><a href="https://github.com/apriorit/FindIDL">FindIDL</a> - CMake
|
||
module for building <a
|
||
href="https://docs.microsoft.com/en-us/windows/win32/midl/interface-definition-idl-file">IDL</a>
|
||
files with MIDL and generating CLR DLL using <a
|
||
href="https://docs.microsoft.com/en-us/dotnet/framework/tools/tlbimp-exe-type-library-importer">Tlbimp</a>.
|
||
<a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/hanjianwei/cmake-modules">cmake-modules</a> -
|
||
<a href="https://github.com/hanjianwei">hanjianwei</a>’s CMake module
|
||
collection. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a href="https://github.com/robotology/ycm">YCM</a> - Extra CMake
|
||
Modules for <a href="https://github.com/robotology/yarp">Yet Another
|
||
Robot Platform</a> and friends. <a
|
||
href="https://opensource.org/licenses/BSD-3-Clause"><code>[BSD3]</code></a></li>
|
||
<li><a href="https://github.com/AnotherFoxGuy/CMakeCM">CMakeCM</a> -
|
||
CMake Community Modules. <code>[NO LICENSE]</code></li>
|
||
<li><a href="https://github.com/ldionne/metabench">Metabench</a> - CMake
|
||
module for compile-time microbenchmarks. <a
|
||
href="http://www.boost.org/LICENSE_1_0.txt"><code>[BOOST]</code></a></li>
|
||
<li><a href="https://github.com/benthevining/Oranges">Oranges</a> - <a
|
||
href="https://github.com/benthevining">Ben Vining</a>’s library of CMake
|
||
modules and toolchains <a
|
||
href="https://www.gnu.org/licenses/gpl-3.0.html"><code>[GPL]</code></a></li>
|
||
</ul>
|
||
<h2 id="utility-scripts">Utility Scripts</h2>
|
||
<p>These provide a wide range of functionality - from dealing with
|
||
compiler flags to using tools. Some also contain modules.</p>
|
||
<ul>
|
||
<li><a href="https://github.com/sakra/cotire">cotire</a> - Cotire
|
||
(compile time reducer) is a CMake module that speeds up the build
|
||
process of CMake based build systems by fully automating techniques as
|
||
precompiled headers and unity builds for C and C++. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a href="https://github.com/onqtam/ucm">ucm</a> - For managing
|
||
compiler/linker flags, collecting sources, precompiled headers, unity
|
||
builds and others. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a href="https://github.com/toeb/cmakepp">cmakepp</a> - Enhancement
|
||
Suite for the CMake Build System. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a href="https://github.com/ruslo/sugar">sugar</a> - CMake tools and
|
||
examples: collecting source files, warnings suppression, etc. <a
|
||
href="https://opensource.org/licenses/BSD-2-Clause"><code>[BSD2]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/Crascit/DownloadProject">DownloadProject</a> -
|
||
CMake module for downloading an external project’s source at configure
|
||
time. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a href="https://github.com/janelia-flyem/buildem">buildem</a> -
|
||
Modular CMake-based system that leverages ExternalProject to simplify
|
||
builds. <a
|
||
href="https://github.com/janelia-flyem/buildem/blob/master/LICENSE.txt"><code>[LICENSE]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/JoakimSoderberg/coveralls-cmake">coveralls-cmake</a>
|
||
- Coveralls JSON coverage generator and uploader for CMake. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/foonathan/compatibility">compatibility</a> -
|
||
Improved version of cmake-compile-features. <a
|
||
href="https://github.com/foonathan/compatibility/blob/master/LICENSE"><code>[LICENSE]</code></a></li>
|
||
<li><a href="https://github.com/Tronic/cmake-modules">cmake-modules</a>
|
||
- LibFindMacros development repository and other cool CMake stuff. <a
|
||
href="https://github.com/Tronic/cmake-modules/blob/master/LibFindMacros.cmake#L2"><code>[LICENSE]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/UCL/GreatCMakeCookOff">GreatCMakeCookOff</a> -
|
||
This is a repository of useful and less than useful CMake recipes. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/polysquare/cppcheck-target-cmake">cppcheck-target-cmake</a>
|
||
- Per-target CPPCheck for CMake. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/polysquare/clang-tidy-target-cmake">clang-tidy-target-cmake</a>
|
||
- Add clang-tidy checks to a target using CMake. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a href="https://github.com/polysquare/cmake-unit">cmake-unit</a> -
|
||
Unit testing framework for CMake. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/polysquare/cmake-header-language">cmake-header-language</a>
|
||
- CMake macro to determine the language of a header file. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/polysquare/tooling-cmake-util">tooling-cmake-util</a>
|
||
- Utility and common library for all polysquare CMake tools. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/polysquare/iwyu-target-cmake">iwyu-target-cmake</a>
|
||
- CMake integration for include-what-you-use. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/arsenm/sanitizers-cmake">sanitizers-cmake</a> -
|
||
CMake module to enable sanitizers for binary targets. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/larsch/cmake-precompiled-header">cmake-precompiled-header</a>
|
||
- Visual Studio and GCC precompiled header macro. <a
|
||
href="https://github.com/larsch/cmake-precompiled-header/blob/master/PrecompiledHeader.cmake#L31"><code>[LICENSE]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/nanoant/CMakePCHCompiler">CMakePCHCompiler</a>
|
||
- CMake precompiled headers via custom compiler extension - with reuse
|
||
support! <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/RWTH-ELP/CMake-codecov">CMake-codecov</a> -
|
||
Enables code coverage and generates coverage reports with CMake targets.
|
||
<a
|
||
href="https://www.gnu.org/licenses/gpl-3.0.html"><code>[GPL]</code></a></li>
|
||
<li><a href="https://github.com/pfultz2/cmake-get">cmake-get</a> - Get
|
||
dependencies in config or script mode. <code>[NO LICENSE]</code></li>
|
||
<li><a href="https://github.com/slurps-mad-rips/ixm">ixm</a> - Make
|
||
CMake less painful when trying to write Modern Flexible CMake. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a href="https://github.com/hakuch/CMakeCooking">CMakeCooking</a> -
|
||
Flexible development environments for CMake projects with external
|
||
dependencies . <a
|
||
href="http://www.apache.org/licenses/LICENSE-2.0"><code>[APACHE2]</code></a></li>
|
||
</ul>
|
||
<h2 id="toolchains">Toolchains</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/dockcross/dockcross">dockcross</a> -
|
||
Cross compiling toolchains in Docker images. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/taka-no-me/android-cmake">android-cmake</a> -
|
||
CMake toolchain file and other scripts for the Android NDK. <a
|
||
href="https://opensource.org/licenses/BSD-3-Clause"><code>[BSD3]</code></a></li>
|
||
<li><a href="https://github.com/cristeab/ios-cmake">ios-cmake</a> -
|
||
Toolchain file and examples using CMake for iOS development. <a
|
||
href="https://opensource.org/licenses/BSD-3-Clause"><code>[BSD3]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/LaurentGomila/qt-android-cmake">qt-android-cmake</a>
|
||
- For building and deploying Qt based apps on Android without QtCreator.
|
||
<a
|
||
href="https://github.com/LaurentGomila/qt-android-cmake/blob/master/license.txt"><code>[LICENSE]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/lachs0r/mingw-w64-cmake">mingw-w64-cmake</a> -
|
||
CMake-based MinGW-w64 Cross Toolchain - to build Windows binaries of
|
||
mpv. <a
|
||
href="https://opensource.org/licenses/ISC"><code>[ISC]</code></a></li>
|
||
<li><a href="https://github.com/mkleemann/cmake-avr">cmake-avr</a> -
|
||
CMake toolchain for AVR. <a
|
||
href="https://github.com/mkleemann/cmake-avr/blob/master/LICENSE"><code>[LICENSE]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/francoiscampbell/arduino-cmake">arduino-cmake</a>
|
||
- This is the CMake project settings for the Arduino platform. <a
|
||
href="https://www.mozilla.org/en-US/MPL/2.0/"><code>[MPL]</code></a></li>
|
||
<li><a href="https://github.com/ruslo/polly">polly</a> - Collection of
|
||
CMake toolchain files and scripts for cross-platform build and CI
|
||
testing. <a
|
||
href="https://opensource.org/licenses/BSD-2-Clause"><code>[BSD2]</code></a></li>
|
||
<li><a href="https://github.com/mosra/toolchains">toolchains</a> - For
|
||
cross-compiling with CMake. They are meant to be mainly used on
|
||
ArchLinux. <code>[NO LICENSE]</code></li>
|
||
<li><a
|
||
href="https://github.com/staticlibs/cmake/tree/master/toolchains">cmake</a>
|
||
- Collection of CMake toolchain files, mostly for static linking. <a
|
||
href="http://www.apache.org/licenses/LICENSE-2.0"><code>[APACHE2]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/a9183756-gh/Arduino-CMake-Toolchain">Arduino-CMake-Toolchain</a>
|
||
- CMake toolchain for all official and 3rd party Arduino platforms. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
</ul>
|
||
<h2 id="examples-templates">Examples / Templates</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/cginternals/cmake-init">cmake-init</a> -
|
||
Template for reliable, cross-platform C++ project setup using CMake. <a
|
||
href="https://github.com/cginternals/cmake-init/blob/master/LICENSE"><code>[LICENSE]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/forexample/android-cmake">android-cmake</a> -
|
||
Examples of using <a
|
||
href="https://github.com/ruslo/hunter">ruslo/hunter</a> package manager
|
||
for an Android application. <a
|
||
href="https://opensource.org/licenses/BSD-2-Clause"><code>[BSD2]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/forexample/hunter-simple">hunter-simple</a> -
|
||
Example of downloading/installing dependencies using <a
|
||
href="https://github.com/ruslo/hunter">ruslo/hunter</a> package manager.
|
||
<a
|
||
href="https://opensource.org/licenses/BSD-2-Clause"><code>[BSD2]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/forexample/package-example">package-example</a>
|
||
- Config mode of find_package (examples for <a
|
||
href="http://stackoverflow.com/questions/20746936/cmake-of-what-use-is-find-package-if-you-need-to-specify-cmake-module-path-an">this</a>
|
||
Stack Overflow question). <code>[NO LICENSE]</code></li>
|
||
<li><a
|
||
href="https://github.com/krux02/minimal_cmake_example">minimal_cmake_example</a>
|
||
- Minimal CMake example, that covers dependencies and packaging. <a
|
||
href="https://creativecommons.org/publicdomain/zero/1.0/"><code>[CC0-1.0]</code></a></li>
|
||
<li><a href="https://github.com/bast/cmake-example">cmake-example</a> -
|
||
Example project which demonstrates various CMake features. <a
|
||
href="https://opensource.org/licenses/BSD-3-Clause"><code>[BSD3]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/ttroy50/cmake-examples">cmake-examples</a> -
|
||
Useful CMake examples in a tutorial format. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a href="https://github.com/euler0/mini-cmake-qt">mini-cmake-qt</a>
|
||
- Minimal CMake template for Qt 5 projects. <a
|
||
href="https://github.com/euler0/mini-cmake-qt/blob/master/LICENSE"><code>[LICENSE]</code></a></li>
|
||
<li><a href="https://github.com/cmake-basis/BASIS">BASIS</a> - CMake <a
|
||
href="https://cmake-basis.github.io">BASIS</a> makes it easy to create
|
||
sharable software and libraries that work together. <a
|
||
href="https://opensource.org/licenses/BSD-2-Clause"><code>[BSD2]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/Lectem/cpp-boilerplate">cpp-boilerplate</a> -
|
||
Template that aims to be a reference for modern CMake and CI. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/robotology/how-to-export-cpp-library">how-to-export-cpp-library</a>
|
||
- An OS-agnostic template project for exporting either shared, static or
|
||
header-only C++ library, sporting ctest and CI support, written in plain
|
||
CMake with line-by-line tutorial comments. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/pabloariasal/modern-cmake-sample">modern-cmake-sample</a>
|
||
- Best practices and proper usage of CMake by using targets.
|
||
<code>[NO LICENSE]</code></li>
|
||
<li><a
|
||
href="https://github.com/DeveloperPaul123/CMakeInstallExample">CMakeInstallExample</a>
|
||
- Installation example for a C++ project (Windows) with Cmake.
|
||
<code>[NO LICENSE]</code></li>
|
||
<li><a
|
||
href="https://github.com/arnavb/cpp14-project-template">cpp14-project-template</a>
|
||
- A C++14 template with CI, tests, code coverage, docs and static
|
||
analysis integration. <a
|
||
href="https://creativecommons.org/publicdomain/zero/1.0/"><code>[CC0-1.0]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/acdemiralp/cmake_templates">cmake_templates</a>
|
||
- Templates for creating C++ libraries and executables (including
|
||
conan). <code>[NO LICENSE]</code></li>
|
||
<li><a
|
||
href="https://github.com/adishavit/cmake_snippets">cmake_snippets</a> -
|
||
Short copy-pasteable CMake snippets. <a
|
||
href="https://opensource.org/licenses/BSD-3-Clause"><code>[BSD3]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/dev-cafe/cmake-cookbook">cmake-cookbook</a> - A
|
||
huge CMake cookbook full of recipes. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/joshpeterson/cpp-template">cpp-template</a> - A
|
||
template C++ repository, using CMake and Catch.
|
||
<code>[NO LICENSE]</code></li>
|
||
<li><a href="https://github.com/vector-of-bool/pitchfork">pitchfork</a>
|
||
- A set of conventions for native C and C++ projects. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a href="https://github.com/pr0g/cmake-examples">cmake-examples</a>
|
||
- A collection of as simple as possible, modern CMake projects. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a href="https://github.com/bsamseth/cpp-project">cpp-project</a> -
|
||
Boiler plate for C++ projects - tests, CI, coverage, docs. <a
|
||
href="https://unlicense.org/"><code>[UNLICENSE]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/TheLartians/ModernCppStarter">ModernCppStarter</a>
|
||
- A template for modern C++ projects using CMake, CI, code coverage,
|
||
clang-format, reproducible dependency management, tests using <a
|
||
href="https://github.com/onqtam/doctest">doctest</a> and much more. <a
|
||
href="https://unlicense.org/"><code>[UNLICENSE]</code></a></li>
|
||
</ul>
|
||
<h2 id="other">Other</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/coderefinery/autocmake">autocmake</a> -
|
||
Using a autocmake.yml file <a
|
||
href="http://autocmake.readthedocs.io/en/latest/">Autocmake</a> composes
|
||
CMake building blocks into a CMake project and generates CMakeLists.txt
|
||
as well as a setup script, which serves as a front-end to
|
||
CMakeLists.txt. <a
|
||
href="https://opensource.org/licenses/BSD-3-Clause"><code>[BSD3]</code></a></li>
|
||
<li><a href="https://gitlab.kitware.com/kmorel/UseLATEX">UseLATEX</a> -
|
||
Collection of CMake macros to simplify building LaTeX files. <a
|
||
href="https://opensource.org/licenses/BSD-3-Clause"><code>[BSD3]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/scikit-build/scikit-build">scikit-build</a> -
|
||
Improved build system generator for CPython C extensions. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a href="https://github.com/cjntaylor/node-cmake">node-cmake</a> -
|
||
CMake-based build system for node.js native modules. <a
|
||
href="https://opensource.org/licenses/ISC"><code>[ISC]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/Lindydancer/cmake-font-lock">cmake-font-lock</a>
|
||
- Advanced syntax coloring support for CMake scripts inside Emacs. <a
|
||
href="https://www.gnu.org/licenses/gpl-3.0.html"><code>[GPL]</code></a></li>
|
||
<li><a href="https://github.com/rastersoft/autovala">autovala</a> -
|
||
Program that automatically generates CMake configuration files for your
|
||
Vala project. <a
|
||
href="https://www.gnu.org/licenses/gpl-3.0.html"><code>[GPL]</code></a></li>
|
||
<li><a href="https://github.com/ros/catkin">catkin</a> - CMake-based
|
||
build system that is used to build all packages in Robot Operating
|
||
System (ROS). <a
|
||
href="https://opensource.org/licenses/BSD-3-Clause"><code>[BSD3]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/jlblancoc/suitesparse-metis-for-windows">suitesparse-metis-for-windows</a>
|
||
- CMake scripts for painless usage of SuiteSparse+METIS. <a
|
||
href="https://opensource.org/licenses/BSD-3-Clause"><code>[BSD3]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/bjornblissing/osg-3rdparty-cmake">osg-3rdparty-cmake</a>
|
||
- CMake scripts for building OpenSceneGraph third party libraries.
|
||
<code>[MIXED LICENSE]</code></li>
|
||
<li><a href="https://github.com/dcarp/cmake-d">cmake-d</a> - CMake for
|
||
D2. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/h4tr3d/cmakeprojectmanager2">cmakeprojectmanager2</a>
|
||
- Enhanced CMake Project Manager plugin for Qt Creator.
|
||
<code>[NO LICENSE]</code></li>
|
||
<li><a href="https://github.com/richq/cmake-lint">cmake-lint</a> - Check
|
||
for coding style issues in CMake files. cmakelint requires Python. <a
|
||
href="http://www.apache.org/licenses/LICENSE-2.0"><code>[APACHE2]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/kbenzie/git-cmake-format">git-cmake-format</a>
|
||
- Integrate clang-format into your CMake project hosted in a git
|
||
repository. <a
|
||
href="https://github.com/kbenzie/git-cmake-format/blob/master/license.txt"><code>[LICENSE]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/nemequ/configure-cmake">configure-cmake</a> -
|
||
configure-cmake is an autotools-style configure script for CMake-based
|
||
projects. <a
|
||
href="https://creativecommons.org/publicdomain/zero/1.0/"><code>[CC0-1.0]</code></a></li>
|
||
<li><a href="https://github.com/polysquare/cmake-ast">cmake-ast</a> -
|
||
Python module to reduce a CMake file to an AST. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/cristianadam/cmake-checks-cache">cmake-checks-cache</a>
|
||
- CMake checks cache helper modules. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a href="https://github.com/DaelDe/cmake_check">cmake_check</a> -
|
||
Static analysis (linter) for the CMake language (e.g. to enforce modern
|
||
CMake rules). <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/regen100/cmake-language-server">cmake-language-server</a>
|
||
- CMake Language Server Protocol Implementation. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/cmake-maven-project/cmake-maven-project">cmake-maven-plugin</a>
|
||
- CMake integration for Maven builds. <a
|
||
href="http://www.apache.org/licenses/LICENSE-2.0"><code>[APACHE2]</code></a></li>
|
||
<li><a
|
||
href="https://github.com/MhmRhm/version-from-git">version-from-git</a> -
|
||
Bake git information into your binary. <a
|
||
href="https://opensource.org/licenses/MIT"><code>[MIT]</code></a></li>
|
||
</ul>
|
||
<h2 id="license">License</h2>
|
||
<p>This is released under the <a
|
||
href="http://creativecommons.org/licenses/by/4.0/"><strong><code>Creative Commons Attribution 4.0 International</code></strong></a>
|
||
License <code>(CC BY 4.0)</code>.</p>
|