cmkr: クリーンな C++ ビルドのための宣言的 CMake 生成
宣言型ビルドフローを体験するために、単一の cmake.toml を作成して、ターゲットや依存関係を含む標準 CMake プロジェクトを生成します。ダンカン・オギルビーは、CMake を Cargo のような TOML マニフェストでラップするユーティリティツールとして cmkr を作成しました。これにより、CMake の互換性を保ちながら、ボイラープレートを削減します。主な機能には、TOML 設定、自動 CMakeLists.txt 生成、FetchContent および vcpkg 統合、CI 用の自己ブートストラッピングが含まれます。手動での CMake スクリプトを減らしたい開発者は、最も恩恵を受けます。
cmkrは実際には何をしますか?
cmkrは、人間が読みやすいcmake.tomlファイルを読み込み、自動的に慣用的なCMakeLists.txtファイルを生成します。このツールは、プロジェクトメタデータ、複数のターゲット定義(実行可能ファイル、静的および共有ライブラリ)、条件付きロジック、プラットフォーム固有のオプションをTOML形式で受け入れ、標準のCMakeを出力します。これにより、各プロジェクトに対して手書きのCMakeスクリプトの代わりに単一の宣言的マニフェストが提供されます。
CIおよび共有プロジェクトでの動作はどうですか?
cmkrは自己ブートストラップを提供するため、リポジトリには生成されたファイルと、下流のビルダーが標準のCMakeとC++コンパイラのみで実行できるブートストラップスクリプトを含めることができます。この設計により、CIパイプラインはcmkrを事前にインストールする必要がなく、生成されたCMakeは自動ビルドのための標準的な入力として残り、プロジェクトの共有や既存のCIワークフローとの統合が簡単になります。
cmkrは安全ですか?学習曲線はどのくらい急ですか?
このツールは標準のCMakeLists.txtを生成することでCMakeの互換性を保つため、ビルド時にCMakeを置き換えることはありません。条件付きロジックやプラットフォーム固有のルールはTOMLに存在し、宣言的なエントリからCMakeの構造へのcmkrのマッピングを学ぶ必要があります。開発者のC++ツールに関するバックグラウンドやCMakeの以前の経験は、立ち上げ時間を短縮します。初心者は冗長性の少ない設定から恩恵を受けますが、マニフェストスキーマを学ぶ必要があります。
宣言的ビルドメタデータを求めるC++チームのための明確な選択
cmkrは、複数のCMakeスクリプトを維持する代わりに単一のTOMLマニフェストを書くことを好む開発者に適しています。これは、既存のCMakeツールやIDEとの互換性を保ちながら、リポジトリのブートストラップを可能にします。主なトレードオフは、追加の抽象化レイヤーです。チームはCMakeの概念を宣言的スキーマにマッピングする必要があり、これにより時間の節約が現れる前に初期の学習ステップが追加されます。





