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) の下で公開されています。