このページの内容

Awesome CMake

CMakeを扱う資料や関連プロジェクトをまとめたAwesomeリストです。 上流ではアーカイブ済み、または更新終了と案内されています。

目次

コミュニティ

資料

  • Latest Documentation
  • FAQ
  • Wiki
  • Webinars
  • Web Book - CGold: CMakeへのヒッチハイカーの Guide[BSD2]
  • Modern CMake - 現代的なCMake PDF およびサンプル。cmakeppの創造者による。[MIT]
  • Tutorial - 現代的なCMakeチュートリアル第1部:CMakeの基礎
  • Article - CMakeのinstallおよびfind_packageを簡単にサポートします。
  • Article - CMakeとGitでC++の依存関係管理が簡単です。
  • Article - CMakeで利用可能にするヘッダーライブラリ
  • Article - 現代のCMakeに関する完全ガイド
  • Article - よくあるCMakeの悪パターンのリスト(2013年ですがまだ関連性があります)
  • Article - CMakeベースのプロジェクトを構築する方法
  • Article - 15分でCMakeのスクリプト言語を学ぶ
  • Article - CMakeのアーキテクチャ
  • Lecture - 効果的なCMake - ダニエル・ペフィル、C++Now 2017で
  • Article - CMakeでクロスプラットフォームCUDAアプリケーションを構築する
  • Tutorial - CMakeを理解するためのステップバイステップガイド
  • Article + Lecture - 現代のCMakeを採用する - ステファン・ケリーによる。
  • Lecture - モジュール設計向け現代的なCMake - マティュー・ロペルト、CppCon 2017で
  • Article - CMakeを正しく使う時期到了(CMakeについての最も良い記事の一つ)
  • Articles - A series on CMake - by Martin Hořeňovský
  • Lecture - CMakeの導入 - Florent Castelli、C++ Sweden 2018で
  • Article - いくつかの良いかつ正確なCMakeのヒント。
  • Article - ライブラリ開発者向けの現代的なCMake
  • Article - 効果的な現代CMake:多くの良い慣行をまとめた素晴らしい解説 - マヌエル・ビンナが執筆
  • Book - プロフェッショナルなCMake:実用的なガイド(有料)
  • Book - 効果的なCMake:より良いCMakeを書くための実用的アドバイス(まだ完全には書かれていない)
  • Web Book - 現代CMakeの導入
  • YouTube Series - CMakeの良い使い方。[CC0-1.0]
  • Lecture - More Modern CMake (slides & examples)- デニズ・バハディルによる、C++ 2018年Meetingでの発表
  • Lecture - Oh No! More Modern CMake (slides)- デニズ・バハディルによる、C++ 2019年Meetingでの発表
  • Article - デフォルトのCMakeビルドタイプ/フラグ、ツールチェーンおよびパッチの変更 - オーマイ! - クリスチャン・アダムが執筆
  • Tutorial - 現代CMakeを適切に使用するためのチュートリアルと例

パッケージ管理/ビルドシステム

  • hunter - C++用のクロスプラットフォームパッケージマネージャ(CMake ExternalProjectに基づく). [BSD2]
  • cget - CMakeによるパッケージ取得。これによりCMakeパッケージをダウンロードおよびインストールできる。[BOOST]
  • cppan - C++アーカイブネットワーク - CMakeをベースにしたC++パッケージマネージャ(C++14で実装)。[APACHE2]
  • cpm - CMakeおよびGitをベースにしたC++パッケージマネージャ。[MIT]
  • conan - Conan C++パッケージマネージャ、Pythonで実装され、CMakeの統合バックエンドを備えている。[MIT]
  • fips - 分散型、マルチプラットフォームC/C++プロジェクト向けの高レベルビルドシステム/依存関係管理。[MIT]
  • Ninja - 他のビルドシステムとは異なる2つの主な特徴を持つビルドシステム:入力ファイルはより上位のビルドシステム(例:CMake)によって生成され、ビルドが可能な限り高速に実行されるように設計されている。[APACHE2]
  • vcpkg - C++オープンソースライブラリの取得とビルドを行うツール。内部でCMakeをビルドスクリプト言語として使用。[MIT]
  • pmm - PMMはCMakeのモジュールで、…パッケージマネージャを管理する。[MIT]
  • cpm - 設定不要のCMake + git依存関係マネージャ。[MIT]
  • FetchDependency - 構成時における依存関係の取得、構成およびビルド。[MIT]

モジュール

  • cmake-modules - Ryan PavlikのCMakeモジュールコレクション。findモジュールが多数存在し、特に仮想現実や物理シミュレーション向けのものが多く、一部はユーティリティモジュールであり、CMake自体のパッチや補完も含まれる。[BOOST]
  • cmake-modules - これは追加のCMakeモジュールのコレクションである。ほとんどがリーン・パヴリックによるものである。[BOOST]
  • CMake - Eyescaleの共通CMakeモジュール。[BSD3]
  • cmake-modules - いくつかの科学ライブラリ向けのCMakeモジュール。[BSD2]
  • cgcmake - コンピュータグラフィックス関連の一般的なアプリケーション向けのCMakeモジュール。[MIT]
  • FindMathematica - Mathematica向けのCMakeモジュール。[MIT]
  • extra-cmake-modules - KDEのCMake用の追加モジュールおよびスクリプト。[BSD3]
  • FindICU.cmake - 国際文字コード(ICU)ライブラリを検出するためのCMakeモジュール。[BSD2]
  • FindTBB - Intel Threading Building Blocks向けのCMake検出モジュール。[MIT]
  • FindWiX - Windows InstallerパッケージをWiX toolsetで構築するためのCMakeモジュール。[BSD3]
  • FindIDL - IDLファイルをMIDLで構築し、Tlbimpを使ってCLR DLLを生成するためのCMakeモジュール。[MIT]
  • cmake-modules - hanjianweiのCMakeモジュールコレクション。[MIT]
  • YCM - Yet Another Robot Platformおよび仲間向けの追加CMakeモジュール。[BSD3]
  • CMakeCM - CMakeコミュニティモジュール。[NO LICENSE]
  • Metabench - コンパイル時マイクロベンチマーク用のCMakeモジュール。[BOOST]
  • Oranges - Ben ViningのCMakeモジュールおよびツールチェーンのライブラリ。[GPL]
  • better.cmake - 現代的なCMake拡張のコレクション。[[APACHE2]][APACHE-2.0]

ユーティリティスクリプト

These provide a wide range of functionality - from dealing with compiler flags to using tools. Some also contain modules.

  • cotire - Cotire(コンパイル時減速)は、CMakeベースのビルドシステムのビルドプロセスを高速化するために、C言語およびC++向けのプリコンパイルヘッダーおよびユニティビルドを完全に自動化するCMakeモジュールである。[MIT]
  • ucm - コンパイラ/リンクフラグの管理、ソースファイルの収集、プリコンパイルヘッダー、ユニティビルドなどに関するもの。[MIT]
  • cmakepp - CMakeビルドシステムの強化パッケージ。[MIT]
  • sugar - CMake ツールと例:ソースファイルの収集、警告の抑制など。[BSD2]
  • DownloadProject - CMake モジュールで、構成時に行う外部プロジェクトのソースコードのダウンロード。[MIT]
  • buildem - ExternalProject を活用してビルドを簡略化する、モジュラリティを持つ CMake ベースのシステム。[LICENSE]
  • coveralls-cmake - Coveralls JSON フォーマットのカバレッジ生成およびアップロードツール(CMake用)。[MIT]
  • compatibility - cmake-compile-features の改善版。[LICENSE]
  • cmake-modules - LibFindMacros の開発リポジトリおよびその他の面白い CMake ツール。[LICENSE]
  • GreatCMakeCookOff - 便利で、それほど便利でない CMake のレシピを収録したリポジトリ。[MIT]
  • cppcheck-target-cmake - CMake 用のターゲットごとの CPPCheck。[MIT]
  • clang-tidy-target-cmake - CMake を使ってターゲットに clang-tidy のチェックを追加。[MIT]
  • cmake-unit - CMake 用のユニットテストフレームワーク。[MIT]
  • cmake-header-language - CMake マクロでヘッダーファイルの言語を判定。[MIT]
  • tooling-cmake-util - すべての polysquare CMake ツールに共通するユーティリティおよび共通ライブラリ。[MIT]
  • iwyu-target-cmake - include-what-you-use との CMake インテグレーション。[MIT]
  • sanitizers-cmake - バイナリターゲット向けのサニタイザーを有効にする CMake モジュール。[MIT]
  • cmake-precompiled-header - Visual Studio および GCC 用のプリコンパイルヘッダーマクロ。[LICENSE]
  • CMakePCHCompiler - CMake 用のプリコンパイルヘッダー(カスタムコンパイラ拡張による)— 再利用機能付き![MIT]
  • CMake-codecov - コードカバレッジを有効にし、CMake ターゲットでカバレッジレポートを生成。[GPL]
  • cmake-get - 設定モードまたはスクリプトモードで依存関係を取得。[NO LICENSE]
  • ixm - Modern Flexible CMake を書く際に CMake をより簡単にする。[MIT]
  • CMakeCooking - 外部依存関係を持つ CMake プロジェクト向けの柔軟な開発環境。[APACHE2]
  • fetch_paths.cmake - 軽量なユーティリティで、CMakeにおけるファイル/ディレクトリパスの取得を簡略化。動的検索と柔軟な出力フォーマットをサポート。[MIT]

ツールチェーン

  • dockcross - Dockerイメージ内でクロスコンパイルツールチェーンを構築。[MIT]
  • android-cmake - Android NDK用のCMakeツールチェーンファイルおよびその他のスクリプト。[BSD3]
  • ios-cmake - iOS開発用のCMakeツールチェーンファイルおよび例。[BSD3]
  • qt-android-cmake - QtベースのアプリケーションをAndroid上でQtCreatorなしでビルド・デプロイするためのもの。[LICENSE]
  • mingw-w64-cmake - CMakeベースのMinGW-w64クロスツールチェーン(mpvのWindowsバイナリをビルドするため)。[ISC]
  • cmake-avr - AVR用のCMakeツールチェーン。[LICENSE]
  • arduino-cmake - Arduinoプラットフォーム用のCMakeプロジェクト設定。[MPL]
  • polly - クロスプラットフォームビルドおよびCIテスト用のCMakeツールチェーンファイルおよびスクリプトのコレクション。[BSD2]
  • toolchains - CMakeによるクロスコンパイルに使用。主にArchLinuxで使用されるように設計されている。[NO LICENSE]
  • cmake - 静的リンクに主に使用されるCMakeツールチェーンファイルのコレクション。[APACHE2]
  • Arduino-CMake-Toolchain - すべての公式および3rdパーティArduinoプラットフォーム向けのCMakeツールチェーン。[MIT]

サンプル/テンプレート

  • cmake-init - 信頼性の高い、クロスプラットフォームC++プロジェクトの設定用のCMakeテンプレート。[LICENSE]
  • android-cmake - ruslo/hunterパッケージマネージャーをAndroidアプリケーションに適用する例。[BSD2]
  • hunter-simple - ruslo/hunterパッケージマネージャーを使って依存関係をダウンロード/インストールする例。[BSD2]
  • package-example - find_packageのコンフィグモード(thisStack Overflowの質問に対する例)。[NO LICENSE]
  • minimal_cmake_example - 最小限のCMake例で、依存関係とパッケージングをカバー。[CC0-1.0]
  • cmake-example - さまざまなCMake機能を示す例プロジェクト。[BSD3]
  • cmake-examples - チュートリアル形式の有用なCMake例。[MIT]
  • mini-cmake-qt - Qt 5プロジェクト向けの最小限のCMakeテンプレート。[LICENSE]
  • BASIS - CMake BASIS により、共有可能なソフトウェアやライブラリを簡単に作成し、互いに協調して動作するようにできます。[BSD2]
  • cpp-boilerplate - 現代の CMake および CI に対する参考となるテンプレート。[MIT]
  • how-to-export-cpp-library - 共有、静的、ヘッダーのみの C++ ライブラリをエクスポートできる OS に依存しないテンプレートプロジェクト。ctest および CI をサポートし、シンプルな CMake で記述されており、1行1行のチュートリアルコメントが含まれています。[MIT]
  • modern-cmake-sample - CMake をターゲットを使って使うことで、ベストプラクティスと適切な使い方を学ぶ。[NO LICENSE]
  • CMakeInstallExample - C++ プロジェクト(Windows)における CMake のインストール例。[NO LICENSE]
  • cpp14-project-template - C++14 テンプレートで CI、テスト、コードカバレッジ、ドキュメント、静的解析の統合。[CC0-1.0]
  • cmake_templates - C++ ライブラリおよび実行ファイル(conan を含む)を作成するためのテンプレート。[NO LICENSE]
  • cmake_snippets - 短いコピー可能な CMake スニペット。[BSD3]
  • cmake-cookbook - 非常に多くのレシピを含む CMake のレシピブック。[MIT]
  • cpp-template - CMake と Catch を使用する C++ テンプレートリポジトリ。[NO LICENSE]
  • pitchfork - ネイティブ C および C++ プロジェクトのための規約の集合。[MIT]
  • cmake-examples - 可能な限りシンプルで、現代的な CMake プロジェクトのコレクション。[MIT]
  • cpp-project - C++ プロジェクトのボイラープレート - テスト、CI、カバレッジ、ドキュメント。[UNLICENSE]
  • ModernCppStarter - 現代の C++ プロジェクト向けの CMake、CI、コードカバレッジ、clang-format、再現可能な依存関係管理、doctest を使用したテストなど、多くの機能を備えた即時使用可能な CMake テンプレート。[UNLICENSE]
  • SeeMake - テスト、静的および動的チェック、カバレッジレポートなど、多くの機能を備えた即時使用可能な CMake テンプレート。[MIT]

その他

  • autocmake - autocmake.yml ファイル Autocmake を使って、CMake のビルドブロックを CMake プロジェクトに組み込み、CMakeLists.txt およびセットアップスクリプトを生成。セットアップスクリプトは CMakeLists.txt のフロントエンドとして機能します。[BSD3]
  • UseLATEX - LaTeX ファイルのビルドを簡略化するための CMake マクロのコレクション。[BSD3]
  • scikit-build - CPython C拡張のための改善されたビルドシステムジェネレーター。[MIT]
  • node-cmake - node.js ネイティブモジュール向けの CMake ベースのビルドシステム。[ISC]
  • cmake-font-lock - Emacs 内の CMake スクリプトにおける高度な構文色付きサポート。[GPL]
  • autovala - Valaプロジェクト用にCMake設定ファイルを自動生成するプログラム。[GPL]
  • catkin - ロボット操作システム(ROS)におけるすべてのパッケージを構築するために使用されるCMakeベースのビルドシステム。[BSD3]
  • suitesparse-metis-for-windows - SuiteSparse+METISの簡単な使用に必要なCMakeスクリプト。[BSD3]
  • osg-3rdparty-cmake - OpenSceneGraphの第三者ライブラリを構築するためのCMakeスクリプト。[MIXED LICENSE]
  • cmake-d - D2用のCMake。[MIT]
  • cmakeprojectmanager2 - Qt Creator用の強化されたCMakeプロジェクトマネージャープラグイン。[NO LICENSE]
  • cmake-lint - CMakeファイルにおけるコーディングスタイルの問題をチェック。cmakelintはPythonを必要とする。[APACHE2]
  • git-cmake-format - gitリポジトリにホストされているCMakeプロジェクトにclang-formatを統合。[LICENSE]
  • cmakefmt - Rustで書かれた高速なCMakeフォーマッター。保存時にフォーマットを実行するエディタサポートおよびGitHubの本家アクションを備えている。[MIT]
  • configure-cmake - configure-cmakeはCMakeベースプロジェクト用のautotoolsスタイルの設定スクリプト。[CC0-1.0]
  • cmake-ast - CMakeファイルをASTに簡略化するPythonモジュール。[MIT]
  • cmake-checks-cache - CMakeチェックキャッシュのヘルプモジュール。[MIT]
  • cmake_check - CMake言語に対する静的解析(リント)ツール(現代的なCMakeルールを強制するなど)。[MIT]
  • cmake-language-server - CMake言語サーバープロトコルの実装。[MIT]
  • cmake-xray - コンパイルデータベースおよびCMakeファイルAPIデータからCMakeベースのC++ビルドを分析・診断。[MIT]
  • cmake-maven-plugin - MavenビルドにおけるCMake統合。[APACHE2]
  • version-from-git - バイナリにgit情報を埋め込む。[MIT]
  • SoCMake - ハードウェア(ASIC、FPGA)およびシステムオンチップのビルド自動化に用いるCMakeベースのビルドシステム。[LGPL]

ライセンス

本リストは Creative Commons Attribution 4.0 International License (CC BY 4.0) の下で公開されています。